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 将列添加到现有表