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

SQL查询:如何匹配数据库中长值字段的指定相关结果?

解决方法:匹配包含目标字符串的记录

咱们先梳理下你之前语句的问题:

  • 你之前的LIKE条件是匹配包含完整的长字符串(比如%Indian Apple(Kashmir) 30Kg at 3400),但你的需求是匹配**包含"Indian Apple(Kashmir)"**的记录,条件方向完全错了。
  • 另外,部分数据库对&&的支持不如标准SQL的AND通用,建议替换成AND来避免兼容性问题。

基础正确写法

如果你的数据库(比如MySQL、SQL Server)默认不把括号当作通配符,直接用下面的语句就能拿到想要的结果:

SELECT * FROM product WHERE name LIKE '%Indian Apple(Kashmir)%';

如果你确实需要保留id='1'的过滤条件,就加上:

SELECT * FROM product WHERE id='1' AND name LIKE '%Indian Apple(Kashmir)%';

处理大小写敏感问题

如果你的数据库是大小写敏感的(比如PostgreSQL默认配置),可以用大小写转换函数避免漏查:

-- MySQL/PostgreSQL 写法
SELECT * FROM product WHERE LOWER(name) LIKE LOWER('%Indian Apple(Kashmir)%');

-- SQL Server 也可以用UPPER实现相同效果
SELECT * FROM product WHERE UPPER(name) LIKE UPPER('%Indian Apple(Kashmir)%');

特殊情况:括号需要转义

如果你的数据库中括号被当作特殊字符(比如启用了正则模式的LIKE),需要用转义字符处理:

-- MySQL 直接用\转义
SELECT * FROM product WHERE name LIKE '%Indian Apple\(Kashmir\)%';

-- 通用写法:用ESCAPE指定自定义转义符
SELECT * FROM product WHERE name LIKE '%Indian Apple!Kashmir!%' ESCAPE '!';

为什么之前的语句没生效?

  • 第一个语句LIKE '%Indian Apple(Kashmir) 30Kg at 3400':这个是匹配以该长字符串结尾的记录,你的字段值刚好是这个字符串,理论上能匹配,但如果id='1'的记录不存在,或者数据库对&&支持有问题,就会返回空。
  • 第二个语句LIKE '%Indian Apple(Kashmir) 30Kg at 3400%':这个是匹配包含该长字符串的记录,范围太窄,只有当字段值包含完整的长字符串才会命中,不符合你要找短字符串相关记录的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:45:11