Snow SQL筛选含.clicked后缀的数据返回空值,求解决思路
解决LIKE '%.clicked'返回空值的问题
以下是几个排查和解决方向:
先确认数据实际内容
先执行查询查看目标列的实际结尾字符,排查是否存在肉眼不可见的隐藏字符或大小写差异:SELECT 列名, RIGHT(列名, 7) AS ending FROM 表名 LIMIT 20;观察
ending列是否严格等于.clicked,比如是否存在.Clicked、.CLICKED或者末尾带空格的情况。处理大小写敏感问题
不同数据库的大小写敏感规则不同,若数据存在大小写差异,可改用不区分大小写的匹配方式:- MySQL:
WHERE 列名 LIKE '%.clicked' COLLATE utf8_general_ci - PostgreSQL:
WHERE LOWER(列名) LIKE '%.clicked' - SQL Server:
WHERE 列名 LIKE '%.clicked' COLLATE SQL_Latin1_General_CP1_CI_AS
- MySQL:
清理隐藏空白字符
若数据末尾存在空格、换行或制表符,TRIM默认仅清理首尾空格,可针对性清理:-- 清理末尾所有空白字符 WHERE TRIM(TRAILING FROM 列名) LIKE '%.clicked' -- 或直接移除换行、制表符 WHERE REPLACE(REPLACE(列名, '\n', ''), '\t', '') LIKE '%.clicked'用字符串函数替代LIKE匹配结尾
直接通过RIGHT函数截取末尾字符进行精确匹配,避免LIKE的通配符可能带来的问题:-- 确保列长度足够再截取,避免报错 WHERE CHAR_LENGTH(列名) >= 7 AND RIGHT(列名, 7) = '.clicked'检查列数据类型
如果目标列不是字符串类型(如JSON、数组等),需先转换为字符串再匹配:WHERE CAST(列名 AS VARCHAR) LIKE '%.clicked'
内容的提问来源于stack exchange,提问作者Bkthu M
相关产品推荐
相关产品推荐

