gpt4 book ai didi

sql - 表名两边的引号到底有什么作用?

转载 作者:行者123 更新时间:2023-12-03 06:21:32 25 4
gpt4 key购买 nike

我认为引号 (") 只是一种分组标记,但我正在调试一些 NHibernate 代码并注意到,而

SELECT * FROM site WHERE site_id = 3;

工作正常

SELECT * FROM "site" WHERE site_id = 3;

因表或 View 不存在错误而失败。

什么给出了?

最佳答案

在 Oracle 中将双引号放在标识符两侧会导致 Oracle 将该标识符视为区分大小写,而不是使用默认的不区分大小写。如果创建名称周围带有双引号的表(或列),则必须始终使用双引号引用标识符并正确指定大小写(所有大写标识符除外,其中双引号没有意义) )。

在幕后,Oracle 始终进行区分大小写的标识符匹配。但在进行匹配之前,它总是将未用双引号引起来的标识符转换为大写。如果您在标识符两边加上双引号,Oracle 会跳过转换为大写。

所以如果你做类似的事情

CREATE TABLE my_table( 
col1 number,
col2 number
)

你可以

SELECT * FROM my_table
SELECT * FROM MY_TABLE
SELECT * FROM My_Table
SELECT * FROM "MY_TABLE"

但类似

SELECT * FROM "my_table" 

将会失败。

另一方面,如果你做了类似的事情

CREATE TABLE "my_other_table"( 
col1 number,
col2 number
)

你不能这样做

SELECT * FROM my_other_table
SELECT * FROM MY_OTHER_TABLE
SELECT * FROM My_Other_Table
SELECT * FROM "MY_OTHER_TABLE"

但是这个

SELECT * FROM "my_other_table" 

可以工作

关于sql - 表名两边的引号到底有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/563090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com