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

含特殊列名的SELECT查询匹配存在数据却返回0结果问题

问题原因
  • 核心错误是列名误用单引号包裹:SQL中单引号用于标识字符串常量,你现有查询的WHERE条件本质是判断'"Name (xyz)"'这个固定字符串是否包含AB CD EF G,而非比对Name (xyz)列的实际值,条件永远不成立,自然返回0条结果。
  • 其次,你需要的是精确匹配,用LIKE加通配符属于不必要的模糊匹配写法,逻辑上也容易因为额外字符匹配不到结果。
  • 额外注意:table是SQL保留字,直接用作表名也会导致解析异常,需要同步转义。
解决办法

针对不同数据库的标识符转义规则,写法分别如下:

  • MySQL 环境:使用反引号包裹带特殊字符、空格的列名和表名
SELECT *
FROM `table`
WHERE `Name (xyz)` = 'AB CD EF G';

如果确实有模糊匹配需求,将=替换为LIKE '%AB CD EF G%'即可。

  • PostgreSQL、SQL Server 环境:使用双引号包裹带特殊字符、空格的列名和表名
SELECT *
FROM "table"
WHERE "Name (xyz)" = 'AB CD EF G';
  • Oracle 环境:使用双引号包裹的同时,需保证列名、表名的大小写与建表时的定义完全一致
SELECT *
FROM "table"
WHERE "Name (xyz)" = 'AB CD EF G';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:06:04