SQL SELECT 不能引用“INDEX”列

Posted

技术标签:

【中文标题】SQL SELECT 不能引用“INDEX”列【英文标题】:SQL SELECT cannot reference "INDEX" column 【发布时间】:2021-03-19 11:49:01 【问题描述】:

使用 Advantage SQL,我有以下查询:

SELECT TOP 10 mytable.*
FROM "mytable.ADT" mytable
ORDER BY date DESC

这会返回这个数据集:

INDEX            NR     NAME       Date
---------------------------------------------------
"145443"         115    Bob        19.03.2021 12:26
"23545",1        215    Steve      19.03.2021 12:09
"564543","",0    215    John       19.03.2021 12:09
"456234"         215    Mark       19.03.2021 12:09

我想做的是处理 INDEX 列中的数据。但是如果我使用这个字段名运行一个普通的SELECT 查询:

SELECT mytable.INDEX etc

它没有运行。我也不能将它添加为别名或任何东西。

是否有任何解决方法可以将特定列拉入SELECT?我的目标是进行文本操作以删除引号并仅提取位于中间的纯数字。

这是我第一次遇到这个问题——我猜 INDEX 这个词在某种程度上是一个函数名,它把事情搞砸了。但我也猜想有办法解决它吗?

谢谢。

【问题讨论】:

【参考方案1】:

INDEX 是一个 SQL 关键字——可能是保留的,这就是问题所在。

你需要逃避它。我相信 Advantage 支持双引号和方括号:

SELECT mytable."INDEX", mytable.[INDEX]
FROM "mytable.ADT" mytable
order by date desc

请注意,当您对列名进行转义时,大写在某些数据库(但不是 Advantage SQL)中很重要。

【讨论】:

仅供参考,Advantage DB 的列名不区分大小写,无论是否转义。 @AlexW。 . .谢谢你的信息。

以上是关于SQL SELECT 不能引用“INDEX”列的主要内容,如果未能解决你的问题,请参考以下文章

在Oracle中定义SQL查询。索引为啥不能直接从select语句中引用?求教,谢谢

为啥我不能使用引用 SQL 中其他列的 checkConstraint 将列添加到现有表

错误:列xxx引用的值表达式不能在Proc SQL set语句中直接包含汇总函数

HiveQL SELECT语句查询

plsql不能在sql select中使用变量

神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列