Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi ke:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL analytics endpoint di Microsoft Fabric
Warehouse di database Microsoft Fabric
SQL dalam database Microsoft Fabric
Pengaturan QUOTED_IDENTIFIER menyebabkan SQL Server mengikuti aturan ISO untuk tanda kutip delimiting pengidentifikasi dan string literal. Jika Anda menggunakan tanda kutip ganda untuk memisahkan pengidentifikasi, Anda dapat menggunakan kata kunci yang dipesan Transact-SQL, atau menyertakan karakter yang biasanya tidak diizinkan oleh aturan sintaks Transact-SQL dalam pengidentifikasi.
Sintaks
Sintaks untuk SQL Server, Azure SQL Database, kumpulan SQL tanpa server di Azure Synapse Analytics, dan Microsoft Fabric.
SET QUOTED_IDENTIFIER { ON | OFF }
Sintaks untuk Data Warehouse Azure Synapse Analytics dan Paralel.
SET QUOTED_IDENTIFIER ON
Keterangan
Saat Anda mengatur SET QUOTED_IDENTIFIER ke ON (default), Anda dapat menggunakan tanda kutip ganda ("") untuk memisahkan pengidentifikasi, dan Anda harus menggunakan tanda kutip tunggal ('') untuk memisahkan literal. Semua string yang diapit dalam tanda kutip ganda ditafsirkan sebagai pengidentifikasi objek. Pengidentifikasi yang dikutip tidak perlu mengikuti aturan Transact-SQL untuk pengidentifikasi. Mereka bisa menjadi kata kunci dan dapat menyertakan karakter yang tidak diizinkan dalam pengidentifikasi Transact-SQL. Jika tanda kutip ganda (") adalah bagian dari pengidentifikasi, Anda dapat mewakilinya dengan dua tanda kutip ganda (""). Anda harus mengatur SET QUOTED_IDENTIFIER ke ON saat Anda menggunakan kata kunci yang dipesan untuk nama objek dalam database.
Saat Anda mengatur SET QUOTED_IDENTIFIER ke OFF, Anda tidak dapat mengutip pengidentifikasi dan mereka harus mengikuti semua aturan Transact-SQL untuk pengidentifikasi. Untuk informasi selengkapnya, lihat Pengidentifikasi database. Anda dapat memisahkan literal dengan tanda kutip tunggal atau ganda. Jika Anda memisahkan string harfiah dengan tanda kutip ganda, string dapat berisi tanda kutip tunggal yang disematkan, seperti apostrof.
Catatan
QUOTED_IDENTIFIER tidak memengaruhi pengidentifikasi yang dibatasi yang diapit dalam tanda kurung siku ([ dan ]).
Anda harus mengatur SET QUOTED_IDENTIFIER ke ON saat membuat atau mengubah indeks pada kolom komputasi atau tampilan terindeks. Jika Anda mengatur SET QUOTED_IDENTIFIER ke OFFpernyataan , CREATE, UPDATE, INSERT, dan DELETE gagal pada tabel dengan indeks pada kolom komputasi, atau tabel dengan tampilan terindeks. Untuk informasi selengkapnya tentang pengaturan opsi yang diperlukan SET dengan tampilan dan indeks terindeks pada kolom komputasi, lihat Pertimbangan saat Anda menggunakan pernyataan SET.
Anda harus mengatur SET QUOTED_IDENTIFIER ke ON ketika Anda membuat indeks yang difilter.
Anda harus mengatur SET QUOTED_IDENTIFIER ke ON ketika Anda memanggil metode tipe data xml .
Driver ODBC Klien Asli SQL Server dan Penyedia OLE DB Klien Asli SQL Server untuk SQL Server secara otomatis mengatur QUOTED_IDENTIFIER ke ON saat menyambungkan. Anda dapat mengonfigurasi pengaturan ini di sumber data ODBC, di atribut koneksi ODBC, atau properti koneksi OLE DB. Default untuk SET QUOTED_IDENTIFIER adalah OFF untuk koneksi dari aplikasi DB-Library.
Saat Anda membuat tabel, metadata tabel selalu menyimpan QUOTED_IDENTIFIER opsi seolah-olah ON Anda mengatur opsi ke OFF saat membuat tabel.
Saat Anda membuat prosedur tersimpan, SET QUOTED_IDENTIFIER pengaturan dan SET ANSI_NULLS diambil dan digunakan untuk pemanggilan prosedur tersimpan berikutnya.
Saat Anda menjalankan SET QUOTED_IDENTIFIER di dalam prosedur tersimpan, pengaturan tidak berubah.
Ketika Anda mengatur SET ANSI_DEFAULTS ke ON, QUOTED_IDENTIFIER juga diatur ke ON.
SET QUOTED_IDENTIFIER
QUOTED_IDENTIFIER sesuai dengan pengaturan ALTER DATABASE.
SET QUOTED_IDENTIFIER berlaku pada waktu penguraian Transact-SQL dan hanya memengaruhi penguraian, bukan pengoptimalan kueri atau eksekusi kueri.
Untuk batch ad hoc tingkat atas, penguraian mulai menggunakan pengaturan sesi saat ini untuk QUOTED_IDENTIFIER. Saat batch diurai, setiap kemunculan SET QUOTED_IDENTIFIER perubahan perilaku penguraian dari titik itu, dan menyimpan pengaturan tersebut untuk sesi. Jadi setelah batch diurai dan dijalankan, pengaturan sesi QUOTED_IDENTIFIER diatur sesuai dengan kejadian SET QUOTED_IDENTIFIER terakhir dalam batch.
Transact-SQL statis dalam prosedur tersimpan diurai menggunakan pengaturan QUOTED_IDENTIFIER yang berlaku untuk batch yang membuat atau mengubah prosedur tersimpan.
SET QUOTED_IDENTIFIER tidak berpengaruh ketika muncul di isi prosedur tersimpan sebagai Transact-SQL statis.
Untuk batch berlapis yang menggunakan sp_executesql atau exec(), penguraian dimulai menggunakan QUOTED_IDENTIFIER pengaturan sesi. Jika batch berlapis berada di dalam prosedur tersimpan, penguraian mulai menggunakan QUOTED_IDENTIFIER pengaturan prosedur tersimpan. Saat batch berlapis diurai, setiap kemunculan SET QUOTED_IDENTIFIER perubahan perilaku penguraian sejak saat itu, tetapi pengaturan sesi QUOTED_IDENTIFIER tidak diperbarui.
Untuk menampilkan pengaturan saat ini untuk pengaturan ini, jalankan kueri berikut:
DECLARE @QUOTED_IDENTIFIER AS VARCHAR (3) = 'OFF';
IF ((256 & @@OPTIONS) = 256)
BEGIN
SET @QUOTED_IDENTIFIER = 'ON';
END
SELECT @QUOTED_IDENTIFIER AS QUOTED_IDENTIFIER;
Izin
Memerlukan keanggotaan dalam peran database tetap publik .
Contoh
J. Gunakan pengaturan pengidentifikasi yang dikutip dan nama objek kata yang dipesan
Contoh berikut menunjukkan bahwa SET QUOTED_IDENTIFIER pengaturan harus ON, dan kata kunci dalam nama tabel harus dalam tanda kutip ganda untuk membuat dan menggunakan objek dengan nama kata kunci yang dipesan.
SET QUOTED_IDENTIFIER OFF;
GO
-- Create statement fails.
CREATE TABLE "select"
(
"identity" INT IDENTITY NOT NULL,
"order" INT NOT NULL
);
GO
SET QUOTED_IDENTIFIER ON;
GO
-- Create statement succeeds.
CREATE TABLE "select"
(
"identity" INT IDENTITY NOT NULL,
"order" INT NOT NULL
);
GO
SELECT "identity",
"order"
FROM "select"
ORDER BY "order";
GO
DROP TABLE "SELECT";
GO
SET QUOTED_IDENTIFIER OFF;
GO
B. Gunakan pengaturan pengidentifikasi yang dikutip dengan tanda kutip tunggal dan ganda
Contoh berikut menunjukkan bagaimana tanda kutip tunggal dan ganda digunakan dalam ekspresi string dengan SET QUOTED_IDENTIFIER diatur ke ON dan OFF.
SET QUOTED_IDENTIFIER OFF;
GO
USE AdventureWorks2025;
GO
IF EXISTS (SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'Test')
DROP TABLE dbo.Test;
GO
USE AdventureWorks2025;
GO
CREATE TABLE dbo.Test
(
ID INT,
String VARCHAR (30)
);
GO
-- Literal strings can be in single or double quotation marks.
INSERT INTO dbo.Test
VALUES (1, "'Text in single quotes'");
INSERT INTO dbo.Test
VALUES (2, '''Text in single quotes''');
INSERT INTO dbo.Test
VALUES (3, 'Text with 2 '''' single quotes');
INSERT INTO dbo.Test
VALUES (4, '"Text in double quotes"');
INSERT INTO dbo.Test
VALUES (5, """Text in double quotes""");
INSERT INTO dbo.Test
VALUES (6, "Text with 2 """" double quotes");
GO
SET QUOTED_IDENTIFIER ON;
GO
-- Strings inside double quotation marks are now treated
-- as object names, so they cannot be used for literals.
INSERT INTO dbo."Test"
VALUES (7, 'Text with a single '' quote');
GO
-- Object identifiers do not have to be in double quotation marks
-- if they are not reserved keywords.
SELECT ID,
String
FROM dbo.Test;
GO
DROP TABLE dbo.Test;
GO
SET QUOTED_IDENTIFIER OFF;
GO
Berikut set hasilnya.
ID String
----------- ------------------------------
1 'Text in single quotes'
2 'Text in single quotes'
3 Text with 2 '' single quotes
4 "Text in double quotes"
5 "Text in double quotes"
6 Text with 2 "" double quotes
7 Text with a single ' quote
Konten terkait
- MEMBUAT DATABASE
- Buat DEFAULT (Transact-SQL)
- BUAT PROSEDUR (Transact-SQL)
- Buat ATURAN (Transact-SQL)
- Buat TABEL (Transact-SQL)
- Buat PEMICU (Transact-SQL)
- BUAT TAMPILAN (Transact-SQL)
- jenis Data (Transact-SQL)
- EXECUTE (Transact-SQL)
- SELECT (Transact-SQL)
- Pernyataan SET (Transact-SQL)
- SET ANSI_DEFAULTS (Transact-SQL)
- sp_rename
- Pengidentifikasi database