SQL SERVER使用中的疑问(长期更新)

#    1.关于is not null 和 <> ''的区别

    在SQL中,NULL是一种特有的数据类型,其等价于没有任何值、是未知数。NULL与0、空字符串、空格都不同
    SQL默认情况下对WHERE XX<> Null的判断会永远返回0行,却不会提示语法错误。
    SET ANSI_NULLS ON
        SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<) 比较时取值为 FALSE。

    结论:<> '' 包含了is not null,<> '' 表示该字段不为null,并且不等于空字符串。

#    2.SET QUOTED_IDENTIFIER ON/OFF

    当 SET QUOTED_IDENTIFIER 为 ON 时 标识符可以由双引号分隔,而文字必须由单引号分隔。 
    当 SET QUOTED_IDENTIFIER 为 OFF 时 标识符不可加引号。
   什么是标识符
        
如果创建了一个叫做USER的数据库表,则直接用SQL语句“SELECT * FROM USER”做查询时会报错:“在关键字 'USER' 附近有语法错误。”,也就是USER被视作SQL SERVER的关键字处理了,而不是被认为是一个表或视图。但如果修改为“SELECT * FROM [USER]”就没问题了。此处的方括号就是标识符标识符的作用就是告诉数据库引擎,此处是一个数据库对象(比如是一个表、视图、存储过程等),而不是一个关键字。
        
当SET QUOTED_IDENTIFIER值为ON时,双引号内的字符被当作是数据库对象。而在其值为OFF时,双引号被解释为字符串的边界,和单引号的作用是类似的。
    如下几组SQL 语句都是正确的
        SET QUOTED_IDENTIFIER ON
        SELECT * FROM "USER" WHERE U_NAME='netasp'
        SET QUOTED_IDENTIFIER ON
        SELECT * FROM [USER] WHERE U_NAME='netasp'
        SET QUOTED_IDENTIFIER OFF
        SELECT * FROM [USER] WHERE U_NAME="netasp"
        SET QUOTED_IDENTIFIER OFF
        SELECT * FROM [USER] WHERE U_NAME='netasp'
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值