SQL中LIKE的反向操作符是什么?如何查询输入字符串包含的表字段ID?
解决方案
高效查询被输入字符串包含的字段ID
无需拆分输入字符串或在SQL外做额外处理,直接用数据库内置的字符串包含判断函数就能简洁高效实现需求。不同主流数据库的实现示例如下(假设数据表名为test_table,输入字符串为'hello, this is a test'):
MySQL/MariaDB
使用INSTR()函数,该函数返回子串在目标字符串中的起始位置,不存在则返回0:
SELECT id FROM test_table WHERE INSTR('hello, this is a test', substring) > 0;
PostgreSQL
使用strpos()函数,逻辑与INSTR()一致:
SELECT id FROM test_table WHERE strpos('hello, this is a test', substring) > 0;
SQL Server
使用CHARINDEX()函数:
SELECT id FROM test_table WHERE CHARINDEX(substring, 'hello, this is a test') > 0;
这些方法能直接筛选出substring字段值被输入字符串包含的记录,比拆分输入后多次使用LIKE更高效简洁。
LIKE的反向匹配实现
SQL中没有专门的“反向LIKE”操作符,但可以通过两种方式实现等价效果:
- 反向构造LIKE语句:将输入字符串作为匹配对象,用通配符包裹字段值作为匹配模式:
SELECT id FROM test_table WHERE 'hello, this is a test' LIKE CONCAT('%', substring, '%'); - 使用字符串包含函数:就是前面提到的
INSTR/strpos/CHARINDEX这类函数,它们专门用于判断A字符串是否包含B字符串,执行效率通常比反向LIKE更高。
内容的提问来源于stack exchange,提问作者Frederik Krohn
相关产品推荐
相关产品推荐

