Salah satu kolom saya disebut from
. Saya tidak dapat mengubah nama karena saya tidak berhasil. Apakah saya diizinkan untuk melakukan sesuatu seperti SELECT from FROM TableName
atau adakah sintaks khusus untuk menghindari SQL Server menjadi bingung?
sql
sql-server
Nathan H
sumber
sumber
SELECT "from" FROM TableName
, bagus dan portabel!Jawaban:
Bungkus nama kolom dalam tanda kurung seperti itu,
from
menjadi [dari].Dimungkinkan juga untuk menggunakan yang berikut (berguna ketika menanyakan beberapa tabel):
sumber
select TableName.from from TableName;
PS: Ini berfungsi di MySQLJika sudah ada di PostgreSQL, gunakan tanda kutip ganda di sekitar nama, seperti:
Catatan: Secara internal PostgreSQL secara otomatis mengubah semua perintah dan parameter yang tidak dikutip menjadi huruf kecil. Itu memiliki efek bahwa perintah dan pengidentifikasi tidak peka huruf besar-kecil. sEleCt * dari tAblE; ditafsirkan sebagai pilih * dari tabel; . Namun, parameter di dalam tanda kutip ganda digunakan apa adanya, dan oleh karena itu ADALAH case case: select * from "table"; dan pilih * dari "Table"; mendapat hasil dari dua tabel berbeda.
sumber
Saat Anda melakukannya - alias itu sebagai sesuatu yang lain (atau lebih baik lagi, gunakan tampilan atau SP dan hentikan metode akses langsung lama).
sumber
Ini adalah dua cara untuk melakukannya:
sumber
Pertanyaan Anda tampaknya dijawab dengan baik di sini, tetapi saya hanya ingin menambahkan satu lagi komentar untuk topik ini.
Mereka yang mendesain database harus benar-benar menyadari kata kunci yang dipesan dan menghindari menggunakannya. Jika Anda menemukan seseorang menggunakannya, beri tahu mereka tentang hal itu (dengan cara yang sopan). Kata kunci di sini adalah kata yang dipesan .
Informasi lebih lanjut:
dan
sumber
Jika Anda menggunakan SQL Server, Anda cukup membungkus tanda kurung di sekitar kolom atau nama tabel.
sumber
Di Apache Drill, gunakan backquotes:
sumber
Saya juga menghadapi masalah ini. Dan solusi untuk ini adalah dengan menaruh [Column_Name] seperti ini dalam permintaan.
Jadi itu akan bekerja dengan sangat baik.
sumber
Hai Saya bekerja pada sistem Teradata yang sepenuhnya sesuai dengan ANSI. Gunakan tanda kutip ganda "" untuk memberi nama kolom tersebut.
Misalnya
type
, kata kunci yang dipesan SQL, dan ketika digunakan dalam tanda kutip,type
diperlakukan sebagai nama yang ditentukan pengguna.Lihat contoh kode di bawah ini:
sumber
Anda dapat memasukkan nama kolom Anda di braket seperti:
Atau
Taruh di tabel sementara lalu gunakan sesuka Anda.
Contoh:
Di sini saya hanya berasumsi bahwa your_tablename hanya berisi satu kolom (yaitu dari).
sumber
[from]
adalah satu-satunya kolom yangyour_tablename
punya."[Total]"
? Atau mungkin ada cara untuk menghindarinya, seperti[\[Total\]]
?Saya mengalami masalah yang sama ketika mencoba memperbarui kolom yang namanya kata kunci . Solusi di atas tidak membantu saya. Saya memecahkannya hanya dengan menentukan nama tabel seperti ini:
sumber
Berikut ini akan bekerja dengan sempurna:
sumber
Di MySQL, sebagai alternatif untuk menggunakan back quotes (`), Anda dapat menggunakan UI untuk mengubah nama kolom. Klik kanan tabel> Alter table> Edit nama kolom yang berisi kata kunci sql> Komit.
Sebagai catatan, hal di atas tidak berfungsi di MySQL
sumber
Menilai dari jawaban di sini dan pengalaman saya sendiri. Satu-satunya jawaban yang dapat diterima, jika Anda berencana untuk portabel adalah tidak menggunakan kata kunci SQL untuk tabel, kolom, atau nama lainnya.
Semua jawaban ini bekerja di berbagai basis data tetapi tampaknya banyak yang tidak mendukung solusi ANSI.
sumber