SQL 遇到以零作除数错误——用NULLIF()函数处理为0的分母,字符串分割

  1.  
     
    with tb1 as(select 1 a ,0 b)
    select ISNULL((a*1.0 / NULLIF(b,0)) ,0) AB from tb1
     

    说明:

    a必须乘以1.0  否则    with tb1 as(select 1 a ,2 b)  还是0

    NULLIF(b,0) ,是判断 b 是不是等于 0,如果 b = 0,则 a / b 这个算式返回 NULL值

    ISNULL(null,0),就更简单了,如果 NULLIF 返回 NULL值,那就直接给个默认值 0

    没数据 总比报错好.....

     

    SQL 字符串分割

     

    select PersonLiable,
    (CASE WHEN ISNULL(PersonLiable,'')='null' or ISNULL(PersonLiable,'')='' THEN PersonLiable ELSE
    (SELECT STUFF(
    (SELECT ','+A FROM
    (SELECT LEFT(C,CHARINDEX('-',C,1)-1) AS A FROM
    (SELECT [data] as c FROM SplitStr(PersonLiable,',')) T) M FOR XML PATH('')),1,1,'')) END ) as PersonLiable
    from IPQC_Form where id in(121,122,123)

    结果
    原格式:汪成--941034--白班--Level1,张仲宏--890939--夜班--Level1                  分割后:汪成,张仲宏
    汪成--941034--白班--Level1                                                     分割后: 汪成
    张仲宏--890939--夜班--Level1                                         分割后: 张仲宏

     

     

     

posted @ 2022-11-09 14:04  似曾相识燕归来  阅读(290)  评论(0编辑  收藏  举报