sql - Postgres LIKE 以列值作为子字符串

标签 sql postgresql postgresql-9.2

我正在尝试编写一个 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');

这也行不通。

最佳答案

您的第二次尝试非常接近正确。 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

关于sql - Postgres LIKE 以列值作为子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441319/

相关文章:

sql - 如何在字符串之间格式化和插入字符- Postgresql

php - 如何正确格式化 SQL 日期时间

java - 带有 QueryDSL 的 Postgresql 数组函数

postgresql - 使用具有 has_many 关系的结构为数据库播种时找不到列

python - pickle 对象能否可靠地编码为 Postgres 字符串(与 NOTIFY 一起发送)?

用于比较由数字和文本组成的字符串的 SQL

java - 无法创建表 'basque30.newreferral'(错误号 : 150)

MySQL 转义字符

mysql - 优化 mysql 查询前 10 个 View

postgresql - 子分区表中的常量列