【问题标题】:SELECT * FROM USERS where userid = (null or '') is this t sql query valid or not?SELECT * FROM USERS where userid = (null or '') 这个 t sql 查询是否有效?
【发布时间】:2019-11-25 04:20:03
【问题描述】:
SELECT * 
  FROM users
 WHERE userid = (null OR '')  

这是 TSql 查询userid = (null OR '')有效吗?

【问题讨论】:

  • 此查询在 SQL Server 中无效。如果您尝试运行它,您将收到语法错误。这是一个提示。
  • 这个 t sql 查询是否有效?.. 你试过运行它吗?
  • 通常,如果您想为列提供允许值的列表,则不要使用 = 您使用 IN 就像在 userid IN (value1, value2) 中一样,但我不确定这是否适用于 NULL 作为其中之一这些值。
  • @bjk116:很容易测试:select * from (values (null)) v(x) where x in (null) 什么也不返回,因为null = null 不正确。
  • userid is null or userid = ''

标签: c# sql .net sql-server


【解决方案1】:

对比

 userid = (null OR '')  

无效。首先,语法是错误的:

 field = (value1 OR value2) 

应该写成

(field = value1) OR (field = value2)  

或作为

 field IN (value1, value2) 

第二,null是一个特殊值,代表未知无所谓不适用 em> 等等,这就是为什么 null = null 不等于 True,而是等于 nullunknown 是否等于 unknown?它是 unknown。)当null = nullTrue 时有一些例外情况(例如GroupBy)。但是,为了安全不要放field = nullfield in (..., null, ...),而是field is null。 你的情况

SELECT * 
  FROM users
 WHERE (userid is null) 
    OR (userid = '')

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    相关资源
    最近更新 更多