gpt4 book ai didi

ms-access - SQL 查询中表名中的减号/连字符

转载 作者:行者123 更新时间:2023-12-04 10:28:13 25 4
gpt4 key购买 nike

我刚刚意识到我的表名中包含减号“-”的 SQL 语句执行没有错误。
例如:

SELECT * from MYTAB-10;
SELECT * from MYTAB-9;

还使用 adodb 对象:
rst.Open "MYTAB-10",conn, adOpenDynamic, adLockOptimistic 

...虽然我没有名为 MYTAB-10 的 table ,但只有 MYTAB。我真的很惊讶,因为从来没有听说过像这样写的表名中的任何运算符。
两个版本中的行数(有 - 和没有),不管最后的数字是一样的,那么这里到底发生了什么?
到目前为止,我没有找到任何有关它的信息。
这背后有什么道理吗?

最佳答案

Access 会自动解释 - 之前的分词符

这意味着:

SELECT * from MYTAB-10

相当于下面的查询
SELECT * FROM MYTAB -10 -- Space added
SELECT * from [MYTAB] AS [-10] -- Explicit alias to make meaning more clear

这也意味着您可以编写以下内容
SELECT [-10].SomeField FROM MYTAB-10 INNER JOIN MYTAB-11 ON [-10].SomeField = [-11].AnotherField

由于 ADO 自动添加 SELECT * FROM如果你只提供一个表名,那就是等价的。

但是:永远不要使用它。此行为尚未标准化,并且会使您的代码不可移植,因为其他 RDBMS 会在其上出现语法错误。

另请注意,当直接打开表而不是使用自动生成的 SQL 语句时,这在 ADO 中不起作用:
Set rst = CurrentProject.Connection.Execute("MYTAB-10", Options := adCmdTableDirect)
'Errors: cannot find input table or query MYTAB-10

另请注意: +角色表现出类似的行为。然而, \ , :*不要。

关于ms-access - SQL 查询中表名中的减号/连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60541336/

25 4 0
文章推荐: python - 来自视频的 AWS 实时人体检测
文章推荐: c# - 根据匹配的索引值搜索列表并取项目
文章推荐: html - BeautifulSoup : extracting from deeply nested
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com