Postgres SQL - 使用OR vs ||的LIKE查询的不同结果

时间:2017-02-20 12:16:44

标签: postgresql

我有一个包含整数列的表。它有12条记录,编号为1000到1012.请记住,这些是整数。

此查询按预期返回12个结果:

select count(*) from proposals where qd_number::text like '%10%'

就像这样:

SELECT COUNT(*) FROM "proposals" WHERE (lower(first_name) LIKE '%10%' OR qd_number::text LIKE '%10%' )

但此查询返回2条记录:

SELECT COUNT(*) FROM "proposals" WHERE (lower(first_name) || ' ' ||  qd_number::text LIKE '%10%' )

暗示使用||在连接中,表达式不等于使用OR。这是正确的还是我错过了其他的东西?

2 个答案:

答案 0 :(得分:4)

first_name中可能有空值。对于这些记录(lower(first_name) || ' ' || qd_number::text,结果为空,因此您再也找不到这些数字了。

答案 1 :(得分:2)

  

在连接中使用||,其中表达式不等于使用OR
这是正确的还是我在这里缺少其他东西?

这是正确的。

||string concatenation operator in SQL,而不是OR运营商。