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

含&符号的SQL查询无结果问题排查求助

问题排查:含&符号的公司名称导致SQL查询无结果?

原查询SQL

WITH company_users AS (
    SELECT name
    FROM user_detail
    WHERE company = 'Engineering & Consulting GmbH'
)
SELECT 
    ua.date, 
    COUNT(DISTINCT ua.usename) AS active_user_count
FROM user_activity ua
JOIN company_users cu ON ua.usename = cu.name
GROUP BY ua.date
ORDER BY ua.date;

问题描述

执行上述SQL未返回任何结果,但已确认user_detail表中存在公司名称为'Engineering & Consulting GmbH'的记录,且user_activity表的usename与company_users表的name匹配关系成立。使用'Zeitarbeit GmbH'或'S-Bahn GmbH'作为公司名称时,查询可正常返回结果,怀疑是公司名称中的'&'符号导致问题。

分析与解决方案

是的,核心问题大概率是你用了HTML转义后的&,但数据库中存储的是原始的&符号,导致WHERE条件无法匹配到记录。

解决步骤如下:

  1. 修正WHERE条件中的转义字符
    直接用原始的&替换&,修改后的CTE部分:

    WITH company_users AS (
        SELECT name
        FROM user_detail
        WHERE company = 'Engineering & Consulting GmbH'
    )
    

    这是最可能解决问题的步骤。

  2. 验证数据库中存储的公司名称是否存在隐藏差异
    如果修正后仍无结果,排查是否有前后空格、不可见字符或拼写差异:

    • 先执行精确计数确认匹配情况:
      SELECT COUNT(*) FROM user_detail WHERE company = 'Engineering & Consulting GmbH';
      
    • 若计数为0,尝试用TRIM去除前后空格后匹配:
      SELECT COUNT(*) FROM user_detail WHERE TRIM(company) = 'Engineering & Consulting GmbH';
      
    • 或者用LIKE模糊匹配排查大致范围(注意不同数据库的模糊匹配转义规则,比如MySQL用\转义特殊字符):
      SELECT * FROM user_detail WHERE company LIKE '%Engineering % Consulting GmbH%';
      
  3. 检查JOIN字段的拼写正确性
    注意到查询中user_activity表的字段是usename,确认该字段名是否为笔误(比如是否应该是username),拼写错误也会导致JOIN后无结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:09