zoukankan      html  css  js  c++  java
  • 解决sql server动态SQL中对表字段操作时需要频繁 ISNULL的问题

    使用 SET CONCAT_NULL_YIELDS_NULL OFF 来使得  'a'+null  结果为  'a' 而不是 null

    官网:https://docs.microsoft.com/zh-cn/sql/t-sql/statements/set-concat-null-yields-null-transact-sql?view=sql-server-ver15

    当 SET CONCAT_NULL_YIELDS_NULL 为 ON 时,串联空值与字符串将产生 NULL 结果。 

      例如,SELECT 'abc' + NULL 将生成 NULL

    当 SET CONCAT_NULL_YIELDS_NULL 为 OFF 时,串联空值与字符串将产生字符串本身(空值作为空字符串处理)。 

      例如,SELECT 'abc' + NULL 将生成 abc

      

    如果未指定 SET CONCAT_NULL_YIELDS_NULL,则应用 CONCAT_NULL_YIELDS_NULL 数据库选项的设置。

     备注

      SET CONCAT_NULL_YIELDS_NULL 与 ALTER DATABASE 的 CONCAT_NULL_YIELDS_NULL 设置相同。

      SET CONCAT_NULL_YIELDS_NULL 的设置是在执行或运行时设置的,而不是在分析时设置的。

    创建或更改索引视图、计算列上的索引、筛选索引或空间索引时,SET CONCAT_NULL_YIELDS_NULL 必须为 ON。 

    如果 SET CONCAT_NULL_YIELDS_NULL 为 OFF,无法对包含计算列上的索引、筛选索引、空间索引或索引视图的表运行任何 CREATE、UPDATE、INSERT 和 DELETE 语句。 

    有关计算列的索引视图和索引需要的 SET 选项设置的详细信息,请参阅 SET Statements (Transact-SQL) 中的“使用 SET 语句时的注意事项”。

    如果将 CONCAT_NULL_YIELDS_NULL 设置为 OFF,则不能出现跨服务器边界的字符串串联。

    要查看此设置的当前设置,请运行以下查询。

    判断是否开启

    DECLARE @CONCAT_SETTING VARCHAR(3)
    SET  @CONCAT_SETTING = 'OFF';  
    IF ( (4096 & @@OPTIONS) = 4096 ) SET @CONCAT_SETTING = 'ON';  
    SELECT @CONCAT_SETTING AS CONCAT_NULL_YIELDS_NULL; 
  • 相关阅读:
    HQL语句中类的别名语法以及作用?
    C#面向对象
    c#异步编程一
    c#接口
    c#Socket通信基本使用
    c#FTP基本使用
    c#XML的基本使用
    c#装箱与拆箱
    c#数组与集合
    c#中for与foreach的使用
  • 原文地址:https://www.cnblogs.com/gered/p/14108657.html
Copyright © 2011-2022 走看看