Bagaimana saya mengembalikan nama kolom tabel menggunakan SQL Server 2008? yaitu tabel yang berisi kolom-id ini, nama, alamat, negara dan saya ingin mengembalikan ini sebagai data.
sql
sql-server
tsql
Belliez
sumber
sumber
Ini cara termudah
sumber
Sesuatu seperti ini?
sumber
Salah satu metode adalah dengan menanyakan syscolumns:
sumber
Objtype
kolom yang redundan :)Ini tampaknya sedikit lebih mudah daripada saran di atas karena menggunakan fungsi OBJECT_ID () untuk menemukan id tabel. Setiap kolom dengan id itu adalah bagian dari tabel.
Saya biasanya menggunakan kueri yang sama untuk melihat apakah kolom yang saya tahu adalah bagian dari versi yang lebih baru. Ini adalah permintaan yang sama dengan penambahan {AND name = 'YOUR_COLUMN'} ke klausa where.
sumber
coba ini
...............................................
sumber
WHERE 1=2
dan itu masih akan mengembalikan meta-data kolom. Jika menggunakan antarmuka terprogram seperti ODBC, maka info kolom ini dapat diakses sebagai daftar / larik dari objek kursor dalam program, yang adalah apa yang saya cari. Mungkin tidak masuk akal dalam konteks SQL murni, tetapi merupakan pendekatan ringkas saat menghubungkan ke database melalui Python / Java / C / dll.Berikut ini tampaknya seperti kueri yang disarankan pertama di atas tetapi kadang-kadang Anda harus menentukan database untuk membuatnya berfungsi. Perhatikan bahwa kueri juga harus berfungsi tanpa menentukan TABLE_SCHEMA:
sumber
saya menggunakan
sumber
Mengapa tidak coba saja ini:
Seluruh daftar kolom diberikan dalam skrip. Salin dan gunakan bidang yang diperlukan.
sumber
"I want to return these as data"
, sementara jawaban Anda akan mendapatkan nilai, kemungkinan OP menginginkan data saat runtime.USE[Database] SELECT TABLE_NAME,TABLE_SCHEMA,[Column_Name],[Data_type] FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='dbo'
sumber
sumber
Saya tidak yakin apakah nilai syscolumns.colid sama dengan nilai 'ORDINAL_POSITION' yang dikembalikan sebagai bagian dari sp_columns, tetapi dalam hal berikut saya menggunakannya dengan cara itu - harap saya tidak salah informasi ...
Berikut sedikit variasi pada beberapa jawaban lain yang saya temukan - saya menggunakan ini karena 'posisi' atau urutan kolom dalam tabel penting dalam aplikasi saya - pada dasarnya saya perlu tahu 'Apa itu kolom (n) disebut ? '
sp_columns mengembalikan sejumlah besar hal-hal asing, dan saya lebih mudah dengan fungsi pilih daripada T-SQL, jadi saya memilih rute ini:
sumber
Sementara jawaban @Gulzar Nazim bagus, mungkin lebih mudah untuk memasukkan nama basis data ke dalam kueri, yang bisa dicapai dengan SQL berikut.
sumber
Anda dapat menggunakan kode di bawah ini untuk mencetak semua nama kolom; Anda juga dapat memodifikasi kode untuk mencetak detail lain dalam format apa pun yang Anda suka
Keluaran
Untuk menggunakan kode yang sama untuk mencetak tabel dan nama kolomnya sebagai kelas C # gunakan kode di bawah ini:
Keluaran:
sumber
Saya hanya menggunakan kueri seperti yang disebutkan Martin Smith, hanya sedikit lebih pendek:
sumber
sumber
Karena SysColumns sudah tidak digunakan lagi , gunakan
Sys.All_Columns
:Select * From Sys.Types
akan menghasilkanuser_type_id = ID
jenis. Ini unik di dalam basis data. Untuk jenis data sistem:user_type_id = system_type_id
.sumber
sumber
JIKA Anda bekerja dengan postgresql, ada kemungkinan lebih dari satu skema memiliki tabel dengan nama yang sama dalam hal ini berlaku permintaan di bawah ini
sumber
sumber