PostgreSQL技术问询:如何返回与查询串互为子串的字段记录?
解决方案
你需要同时匹配两种场景:字段值包含查询字符串,或者查询字符串包含字段值,用OR连接两个条件即可实现需求。
针对你的场景,查询语句可以写成:
SELECT * FROM your_table WHERE firstName ILIKE '%beeWax%' OR 'beeWax' ILIKE CONCAT('%', firstName, '%');
逻辑说明
firstName ILIKE '%beeWax%':匹配字段值包含beeWax的记录(对应id=2的beeWaxer)'beeWax' ILIKE CONCAT('%', firstName, '%'):匹配查询字符串beeWax包含字段值的记录(对应id=1的bee)
如果需要支持动态查询参数(避免硬编码beeWax),可以用占位符实现:
SELECT * FROM your_table WHERE firstName ILIKE CONCAT('%', :search_str, '%') OR :search_str ILIKE CONCAT('%', firstName, '%');
注意:将语句中的your_table替换为你实际使用的表名。
内容的提问来源于stack exchange,提问作者Baruch
相关产品推荐
相关产品推荐

