【问题标题】:SQL SELECT cannot reference "INDEX" columnSQL SELECT 不能引用“INDEX”列
【发布时间】: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 这个词在某种程度上是一个函数名,它把事情搞砸了。但我也猜想有办法解决它吗?

谢谢。

【问题讨论】:

    标签: sql indexing advantage-database-server


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 仅供参考,Advantage DB 的列名不区分大小写,无论是否转义。
    • @AlexW。 . .谢谢你的信息。
    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多