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

Snowflake LIKE通配符查询无结果问题求助

问题分析与解决方法

这问题我之前踩过一模一样的坑!一眼看下来是字符编码不匹配导致的,核心就是破折号的类型不一样:

问题核心

你插入的extid字段里的破折号是全角长破折号(Unicode 编码 U+2013),而你查询语句里写的是半角减号(U+002D)——这俩是完全不同的字符,数据库自然匹配不到结果。

验证方法

你可以用ASCII()函数直观看到两者的区别:

-- 查看数据中破折号的ASCII值
SELECT extid, ASCII(SUBSTRING(extid, POSITION('–' IN extid), 1)) AS dash_ascii FROM tsquery;

-- 查看你查询里用的减号的ASCII值
SELECT ASCII('-') AS hyphen_ascii;

执行后会发现两个数值完全不同,这就是匹配失败的根本原因。

解决方案

有两种处理方式,根据你的需求选:

  • 临时修正查询语句:把查询里的半角减号替换成和数据里一致的全角破折号:
    SELECT * FROM tsquery WHERE extid LIKE '%WM–332';
    
  • 统一数据格式:把表中所有全角破折号替换成半角减号,方便后续统一查询:
    UPDATE tsquery SET extid = REPLACE(extid, '–', '-');
    -- 替换后再用原查询语句就能查到结果
    SELECT * FROM tsquery WHERE extid LIKE '%WM-332';
    

小建议

以后在处理字符串匹配的场景时,尽量统一使用半角符号,避免因为全角/半角、特殊符号的差异导致这类“看起来没问题但查不到”的诡异问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:47:42