1. 程式人生 > >SQL Server中SET QUOTED_IDENTIFIER的使用

SQL Server中SET QUOTED_IDENTIFIER的使用

ide flag npr har 必須 lag 那是 sql 關鍵字

SQL Server中SET QUOTED_IDENTIFIER的使用

在存儲過程中經常會有
SET QUOTED_IDENTIFIER on
SET QUOTED_IDENTIFIER off



如果SET QUOTED_IDENTIFIER on時,在創建一個表時,如果這個表的表名,剛好用到了sqlserver的關鍵字,如下面的情況

create table distinct(
id int not null constraint pk_1 primary key,
value varchar(255),
flag int
)

上面的語句運行是會出錯的,不管SET QUOTED_IDENTIFIER為on還是off,會提示 在關鍵字 ‘distinct‘ 附近有語法錯誤。

那是因為distinct是sqlserver的標識符,如果想以distinct為表時,在QUOTED_IDENTIFIER為off的情況下,是不能創建表名為distinct的表的,因為在QUOTED_IDENTIFIER為off情況下,sqlserver的標識符是不允許加引號的,所以在
SET QUOTED_IDENTIFIER off的情況下,不管distinct加引號或不加引號或加雙引號都是不可以的。

但是在 SET QUOTED_IDENTIFIER on 的情況下是可以把sqlserver的標識符加上雙引號來創建以sqlserver標識符為表名的表,但是加單引號也是不可以的。

create table "distinct"(
id int not null constraint pk_1 primary key,
value varchar(255),
flag int
)

可以運行


create table ‘distinct’(
id int not null constraint pk_1 primary key,
value varchar(255),
flag int
)

不可以運行

當 SET QUOTED_IDENTIFIER 為 ON 時,標識符/數據庫內關鍵字可以由雙引號括著。當 SET QUOTED_IDENTIFIER 為 OFF 時,標識符不可加引號,加了引號也沒有用,且必須符合所有 Transact-SQL 標識符規則。

SELECT SESSIONPROPERTY(‘QUOTED_IDENTIFIER‘) quotedidentifier
默認為on
1

SQL Server中SET QUOTED_IDENTIFIER的使用