我试图编写一个WHERE语句,该语句将匹配列值是另一个字符串的子字符串的行。
例如,我的event
记录可能name
Edward Sharpe
字段SELECT * FROM events WHERE(name LIKE 'Edward Sharpe and the Magnetic Zeroes');
。我想做类似的事情:
SELECT * FROM events WHERE('%' || name || '%' LIKE 'Edward Sharpe and the Magnetic Zeroes');
这不起作用。我还有各种各样的排列:
{{1}}
哪个也行不通。
答案 0 :(得分:15)
你的第二次尝试非常接近正确。 LIKE
关键字左侧带有字符串,右侧带有图案。两者都可以是表达式,但%
在右侧模式中只有特殊含义。
试试这个:
SELECT * FROM events
WHERE name LIKE '%Edward Sharpe and the Magnetic Zeroes%';
或者更确切地说:
SELECT * FROM events
WHERE 'Edward Sharpe and the Magnetic Zeroes' LIKE '%' || name || '%';
另请注意,默认情况下,Postgres中的所有字符串操作都区分大小写。要匹配忽略大小写的模式,请使用ILIKE
代替LIKE
。