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

SQL查询中未加定界符的数字开头列名1st为何被解析为st

问题解析

这是SQL标准的标识符解析规则,和可省略的AS别名语法共同导致的结果,属于符合标准的正常行为:

  • 未加定界符(双引号/方括号)的SQL标识符不允许以数字开头,因此你写的1st不会被数据库识别为你建表时定义的"1st"列,不会当做一个整体处理。
  • 数据库会自动把这段内容拆分为两部分:开头的1是整数常量,后面的st是这个常量列的别名。SQL语法中,给列指定别名时的AS关键字是可以省略的,SELECT 1 st和SELECT 1 AS st的语义完全等价。
  • 所以你最终得到的st列,本质是值全为1的常量列,和你表中存储的"1st"列没有任何关系,自然不会报错。

正确写法

如果要查询你定义的特殊列,必须用定界符完整包裹列名:

  • PostgreSQL 中使用双引号:"1st"
  • SQL Server 中开启QUOTED_IDENTIFIER参数时可使用双引号,也可以通用方括号写法:[1st]

这类不符合常规命名规则的列很容易出现这种「不报错但结果完全错误」的隐形问题,生产环境非常不建议使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:15:03