【问题标题】:postgresql WHERE x = y OR x IN (1,2,3) if y = '' [closed]postgresql WHERE x = y OR x IN (1,2,3) if y = '' [关闭]
【发布时间】:2020-09-08 08:26:51
【问题描述】:

是否可以像这样创建 WHERE CLAUSE :

SELECT * FROM something WHERE (x = y OR x IN (1,2,3) if y = '')

什么是正确的 SQL 语法?

【问题讨论】:

  • 你在看 y = '' 其中 a) y 是空字符串还是 b) y 未定义(即 NULL)?是 1) (x = y) OR (x in (1,2,3) if y = '') , 2) (x = y OR x in (1,2,3)) if y = '') ?

标签: sql database postgresql where-clause


【解决方案1】:

您可以在 SQL 中链接布尔表达式,即:

SELECT * FROM something WHERE ((x = y) OR (x IN (1,2,3) AND y = ''))

【讨论】:

  • 当 y 与 ' ' 不同时它工作正常,WHERE 子句使用 x = y。但是当 y = ' ' 时它不起作用,似乎 WHERE 子句不使用 x IN (1,2,3),因为结果中没有出现任何行
  • 会不会y真的不是空字符串,而是NULL?
  • 我有这个:SELECT * FROM something WHERE ((os.name IN (SELECT name_fr FROM order_status WHERE id IN (2,4,6,7,8,12,13)​​) AND '' = '') 或 (os.name_fr = ''))
  • 不确定 AND '' = '' 是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 2015-11-16
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多