这些查询是否相同?如果没有,如何使查询更简单

时间:2018-06-27 07:28:46

标签: sql regex postgresql

初学者在这里提问,这两个查询是否相同?由于某些原因,它们给出的行数不同。

=>行数〜2154

SELECT * 
FROM kliendi_aadress 
WHERE maakond ~'\s\s' 
   OR linn ~'\s\s' 
   OR asula ~'\s\s' 
   OR tanav ~'\s\s' 
   OR maja ~'\s\s' 
   OR korter ~'\s\s' 
   OR postikood ~'\s\s'

=>行数〜1923

SELECT * 
FROM kliendi_aadress 
WHERE maakond || linn || asula || tanav || maja || korter || postikood ~'\s\s'

如果不是,如何使第一个查询更简单,更快捷?

2 个答案:

答案 0 :(得分:2)

查询可能返回不同的结果,因为简单的列串联可能会添加额外的两个空格子字符串。您可以尝试使用分隔符进行串联:

SELECT * 
FROM kliendi_aadress 
WHERE concat_ws(',', maakond, linn, asula, tanav, maja, korter, postikood) ~ '\s\s'

答案 1 :(得分:1)

它返回不同的东西,因为在下一个查询中两次写了“ Tanav”吗?