ANSI_NULLS 和 QUOTED_IDENTIFIER

时间:2021-12-21 03:19:45

1  ANSI_NULLS

当 SET ANSI_NULLS 为 ON 时,对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE
    例如:SELECT * from table WHERE column_name = NULL 和 SELECT * from table WHERE column_name <> NULL
    这个两个语句,不管column_name 中包含空值和非空值,返回的结果行都是 零行

当 SET ANSI_NULLS 为 OFF 时,情况就和上面描述相反了

数据库默认是 设置  SET ANSI_NULLS 为 ON 的

2 QUOTED_IDENTIFIER

当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。
    例如:
        SET QUOTED_IDENTIFIER ON
          SELECT * FROM "USER"  WHERE a='netasp'

当SET QUOTDE_IDENTIFIER OFF时,双引号被解释为字符串的边界,和单引号的作用是类似的,所以不能用来分隔标识符,
    可以用来分隔字符
    例如:
        SET QUOTED_IDENTIFIER ON
          SELECT * FROM USER  WHERE a='netasp' or a="netasp"