You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL查询数据库值是否为输入字符串的子串?

实现数据库字段值是否为输入字符串的子串查询

你需要的是反向匹配:判断数据库中的name字段值是否是输入字符串的子串,而非输入内容是否包含在字段中。以下是主流数据库的实现方案,同时处理大小写不敏感的场景(匹配示例中的ANDROID和Android studio):

MySQL/MariaDB 实现

可以使用LIKE结合字符串拼接,或者LOCATE函数:

方法1:LIKE 反向匹配

SELECT name 
FROM technology 
WHERE LOWER('Android studio') LIKE CONCAT('%', LOWER(name), '%');
  • LOWER()函数统一转换为小写,避免大小写差异导致匹配失败
  • CONCAT('%', LOWER(name), '%')将数据库字段值包装为模糊匹配的通配符格式,用输入字符串去匹配它

方法2:LOCATE 函数

SELECT name 
FROM technology 
WHERE LOCATE(LOWER(name), LOWER('Android studio')) > 0;
  • LOCATE(substr, str)返回子串在字符串中的起始位置,若返回值>0则说明存在匹配

PostgreSQL 实现

PostgreSQL支持原生忽略大小写的ILIKE,也可以用POSITION函数:

方法1:ILIKE 反向匹配

SELECT name 
FROM technology 
WHERE 'Android studio' ILIKE CONCAT('%', name, '%');
  • ILIKE自动忽略大小写,无需额外转换

方法2:POSITION 函数

SELECT name 
FROM technology 
WHERE POSITION(LOWER(name) IN LOWER('Android studio')) > 0;

SQL Server 实现

使用CHARINDEX函数处理子串匹配:

SELECT name 
FROM technology 
WHERE CHARINDEX(LOWER(name), LOWER('Android studio')) > 0;
  • CHARINDEX(substr, str)功能类似LOCATE,返回子串位置,>0表示匹配成功

说明

如果你的输入字符串是动态变量(比如来自应用程序),建议使用参数化查询避免SQL注入风险,不同编程语言的参数化方式略有差异,但核心逻辑一致。

内容的提问来源于stack exchange,提问作者Lulex97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:40:55