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

SQL查询:如何匹配列中值作为目标字符串前缀的记录?

解决寻找字符串前缀的SQL查询问题

我来帮你搞定这个SQL查询问题——你之前的思路方向是对的,但LIKE的用法没弄对,导致没得到想要的结果。

核心问题分析

你之前写的WHERE 'AMO200IL351972598764' LIKE MatrixCode缺少了通配符,这种写法只有当MatrixCode的值和目标字符串完全相等时才会匹配,自然找不到那些作为前缀的记录。而CONTAINS是用于全文索引搜索的,并不适合这种前缀匹配的场景。

正确的查询语句

这里有两种可靠的实现方式,都不需要截断目标字符串:

方法1:使用LIKE + 通配符%

这是最直观的前缀匹配写法,通过将MatrixCode和通配符%拼接,让目标字符串只要以MatrixCode的值开头就会被匹配:

SELECT * 
FROM [t_MO_MatrixCodeMapping] 
WHERE 'AMO200IL351972598764' LIKE MatrixCode + '%'

如果你的数据库不支持+拼接字符串(比如MySQL),可以换成CONCAT函数:

SELECT * 
FROM [t_MO_MatrixCodeMapping] 
WHERE 'AMO200IL351972598764' LIKE CONCAT(MatrixCode, '%')

方法2:使用LEFT函数对比

另一种思路是截取目标字符串的前LEN(MatrixCode)个字符,和MatrixCode直接对比,相等则说明是前缀:

SELECT * 
FROM [t_MO_MatrixCodeMapping] 
WHERE LEFT('AMO200IL351972598764', LEN(MatrixCode)) = MatrixCode

效果验证

比如你的表中MatrixCode有AMO200,上述两种方法都会把这条记录筛选出来,因为AMO200是AMO200IL351972598764的前缀;而shampo250、condishioner500则不会被匹配,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:22:35