mssql sqlserver 数据表按照指定(特定)值排序的方法分享


摘要:
下文讲述将数据表中列值按照指定值进行排序,如下所示
实验环境:sql server 2008 r2


今天接到同事的需求,需要将数据表中,列值为”A”的排第一位,列值为”B”的排第二位,列值为”C”的排第三位,
其它排随机排最后,经过上网查阅各种资料,终于找到了实现此类需求的方法。

实现思路:
采用case when 对排序字段重新编码,然后进行排序

    ---例:对数据表中"列1"值,按照列值等于A 、B、C的方式依次排序
    select [列1],[列2],[列3] ...  
     from [数据表]
      where 1=1 ...   ---检索条件
      order by  
       case  
            when [列1] ='A' then 0
            when [列1] ='B' then 1
            when [列1] ='C' then 2
            else   3
       end
     asc

mssql sqlserver 中like 替代写法分享


摘要:
sql脚本中like关键字是我们用于获取sql字段中是否包含指定值的方法,下文介绍一种全新的替代like的写法的方案,如下所示:
实验环境:sql server 2008 R2


在sqlserver,当我们需要检测一列是否包含某一个值时,我们会采用like写法,如下所示:

   ---将"列1"中包含maomao365.com值,全部显示出来
   select [列1],[列2],[列3] ... from [数据表] 
    where  [列1]  like '%maomao365.com%'
    
  ---替代方案的写法
   select [列1],[列2],[列3] ... from [数据表] 
    where   charindex('maomao365.com',[列1])>0 
  
   ---替代方案常用场景:
   ---特殊字符包含性检测
      ----列1 包含百分号的写法
       select [列1],[列2],[列3] ... from [数据表] 
       where   charindex('%',[列1])>0 
     
       ----列1 包含回车键的写法
       select [列1],[列2],[列3] ... from [数据表] 
       where   charindex(char(13),[列1])>0 

mssql sqlserver 报”消息18456,级别16,状态1 用户‘sa’登录失败的处理方法分享


摘要:
今天运行在线上的软件出现 18456 ,sa登录失败的错误信息,经过多方打听,才知道由于新员工入职,竟然将线上服务器的sa密码一通乱改,殊不知我们的APP正在应用sa账号进行数据库链接呢?
实验环境:sql server 2008 r2

得知具体情况后,我们只能将sa密码修改为新的密码,使系统能正常的跑起来,具体步骤如下所示:

   ---1.清空原sa密码
    exec  sp_password null, null, 'sa'
   ---2.设置新的sa密码
     exec sp_password null, 'newPassword', 'sa' 
     ---newPassword为新的密码