日度归档:2019年1月1日

mysql 中 sql脚本之if函数使用技巧分享


摘要:
下文讲述mysql中,编写sql脚本时,if函数的用法技巧,如下所示:
实验环境:mysql


在mssql中,编写sql脚本时,如果使用if关键字,应使用 if begin then else begin end 结构处理if中逻辑判断,
但是在mysql中,if函数,我们可以直接使用三元表达式的形式处理if条件判断,下文将讲述mysql中的if关键字的用法。

mysql if 语法简介

if(表达式1,表达式2,表示式3)
————————————
表达式1:为表达式逻辑判断条件,如果逻辑条件成立,则输出 “表达式2” ,反之 则输出 “表达式3”


mysql if语法举例应用

例:
根据某个字段进行判断,当字段等于一个值的时,启用另一个字段,反之使用另外一个字段

   select
if([列A] = 'test',[列B],[列C]) as '新列'
from [tableName] as a;

mssql sqlserver case 关键字应用说明简介


摘要:
下文讲述sqlserver中case关键字的用法,如下所示:
实验环境:sql server 2008 R2



case 关键字用法简介:

  --用法1: 字段判断
   select    
       CASE [列名]
            WHEN 'a' THEN '类别A'
            WHEN 'b' THEN '类别B'
            ELSE '其它' 
        END
            as [类别分类] 
     from [表名]
 ----------------------------------------
  --用法2:when 条件中指定任意字段判断
    select    
       CASE 
            WHEN [列名]= 'a' THEN '类别A'
            WHEN [列名]='b' THEN '类别B'
            ELSE '其它' 
        END
            as [类别分类] 
     from [表名]


case 匹配注意事项:
当case 匹配第一个匹配结果符合时,此时case 函数将会终止执行;
case 用法2比用法1更加灵活,用法2可以同时对多个字段进行判断,相比case写法1具有更强的灵活性。



case 关键字用途:

1.字段替换显示
在一些特殊的场景,数据库存储的为1 或 0 表示开关,当我们呈现数据给用户时,我们可以采用case 对行数据进行相关操作,如下所示:

    select    
       CASE 
            WHEN [列名]= '1' THEN '开'
            WHEN [列名]='0' THEN '关'
            ELSE '未知' 
        END
            as [标志] 
     from [表名]

2.分类数据统计
例:
统计一张销量表中,
销量大于等于100 的销售员个数
销量小于100的销售员个数

   select  销售员,
     sum(
      case 
      when  [销量] >=100 then 1 
      else 0 
       end 
     ) as [销量大于等于100],
    sum(
      case 
      when  [销量] <100 then 1 
      else 0 
       end 
     ) as [销量小于100]
   from  [tablename]
    group by 销售员
   

mssql sqlserver 将一个十进制数字转换为二进制,不足位数时,左边补零


摘要:
下文讲述sqlserver技巧,将十进制数字转换为二进制,当位数不足时,左边补零,如下所示:
实验环境:sql server 2008 R2


实现思路:
1.将十进制数值转换为二进制
2.将二进制位数不足时,左边补零


例:

     ----1.新建十进制转换为二进制的自定义函数
      create function fn__IntToBit(@t int)
/*
函数功能:十进制转换为二进制方法分享
*/
returns varchar(300)
as
begin

    declare @info varchar(300);
    set @info=''
    while (@t>0)
    begin
        select @info=cast(@t%2 as varchar)+@info,@t=@t/2
    end 

    return(@info)
end
go

 -----2.采用right对数值不足位数,进行补齐
 ---例:返回10的二进制, 不足8位,对其进行补零操作
   declare  @formatExtend varchar(10)
    set @formatExtend  ='00000000'

     set     @str = @formatExtend +dbo.fn__IntToBit(10)
    ---输出结果 
    select  right(@str,10); --从右边获取8个字符串