使用CONCAT结合LIKE查询时Post_content返回NULL且未获全量数据的问题
问题解决方法
1. 解决LIKE筛选不全量数据的问题
原SQL的LIKE ' % XYZ % '包含多余空格,只会匹配XYZ前后都带空格的company_name,比如" 测试 XYZ 公司 ",但无法匹配像"测试XYZ公司"、"测试 XYZ公司"这类数据。
修改方式:
- 去掉LIKE条件里的多余空格,改为:
WHERE company_name LIKE '%XYZ%' - 如果数据库区分大小写(如Oracle),需要统一大小写后匹配:
WHERE LOWER(company_name) LIKE '%xyz%'
2. 解决CONCAT返回NULL的问题
CONCAT函数的特性是:只要任意一个拼接参数为NULL,整个拼接结果就会变成NULL。你的情况是list_rank、company_size或industry字段中存在NULL值,导致post_content显示为NULL。
修改方式:用COALESCE函数将NULL字段替换为空字符串(或你需要的默认值),确保拼接正常:
SELECT company_id AS ID, CONCAT( COALESCE(c.list_rank, ''), '|||', COALESCE(c.company_name, ''), '|||', COALESCE(c.company_size, ''), '|||', COALESCE(c.industry, '') ) AS post_content, c.admin_approved FROM company22 c WHERE company_name LIKE '%XYZ%';
验证建议
- 先单独执行
SELECT list_rank, company_name, company_size, industry FROM company22 WHERE company_name LIKE '%XYZ%';,检查哪几个字段存在NULL值,确认替换逻辑是否正确。 - 测试修改后的LIKE条件,确认是否能匹配到所有包含XYZ的公司名称。
内容的提问来源于stack exchange,提问作者Naren Verma
相关产品推荐
相关产品推荐

