Saya perlu menulis kueri di SQL server untuk mendapatkan daftar kolom dalam tabel tertentu, tipe datanya yang terkait (dengan panjang) dan jika tidak nol. Dan saya telah berhasil melakukan ini.
Tapi sekarang saya juga perlu mendapatkan, dalam tabel yang sama, terhadap kolom - TRUE
jika kolom itu adalah kunci utama.
Bagaimana saya melakukan ini?
Output yang saya harapkan adalah:
Column name | Data type | Length | isnull | Pk
sql
sql-server
sql-server-2005
Shrayas
sumber
sumber
Jawaban:
Untuk menghindari duplikat baris untuk beberapa kolom, gunakan user_type_id alih-alih system_type_id.
Ganti saja
YourTableName
dengan nama tabel Anda yang sebenarnya - berfungsi untuk SQL Server 2005 dan yang lebih tinggi.Jika Anda menggunakan skema, ganti
YourTableName
dengan diYourSchemaName.YourTableName
manaYourSchemaName
nama skema aktual danYourTableName
nama tabel sebenarnya.sumber
LEFT OUTER JOIN sys.index_columns ic LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id ON ic.object_id = c.object_id AND ic.column_id = c.column_id AND i.is_primary_key=1
Prosedur tersimpan sp_columns mengembalikan informasi tabel terperinci.
sumber
Anda dapat menggunakan kueri:
untuk mendapatkan semua metadata yang Anda butuhkan kecuali untuk informasi Pk.
sumber
Di SQL 2012 Anda dapat menggunakan:
Ini akan memberi Anda nama kolom beserta propertinya.
sumber
Coba ini:
sumber
Untuk memastikan Anda mendapatkan panjang yang tepat, Anda perlu mempertimbangkan jenis unicode sebagai kasus khusus. Lihat kode di bawah ini.
Untuk informasi lebih lanjut, lihat: https://msdn.microsoft.com/en-us/library/ms176106.aspx
sumber
Memperluas jawaban Alex, Anda dapat melakukan ini untuk mendapatkan batasan PK
Saya pasti lupa bahwa Anda ingin bendera menentukan apakah kolom yang diberikan adalah bagian dari PK, bukan nama batasan PK. Untuk itu Anda akan menggunakan:
sumber
Wite nama tabel di editor query pilih nama dan tekan Alt + F1 dan itu akan membawa semua informasi dari tabel.
sumber
Jalankan
SELECT *
dalam pernyataan di atas untuk melihat kembali information_schema.columns.Pertanyaan ini sebelumnya telah dijawab - https://stackoverflow.com/a/11268456/6169225
sumber
Saya sedikit terkejut tidak ada yang disebutkan
sumber
sumber
Melemparkan jawaban lain ke dalam ring, ini akan memberi Anda kolom itu dan banyak lagi:
sumber
Untuk mencari kolom mana di tabel mana berdasarkan pada tipe data pencarian Anda untuk tiga tabel berbeda dalam satu database. Kueri ini dapat diperluas ke tabel 'n'.
sumber
Temukan hasil gabungan untuk Datatype dan Panjang dan nullable dalam bentuk "NULL" dan "Tidak null" Gunakan kueri di bawah ini.
Anda akan menemukan hasil seperti yang ditunjukkan di bawah ini.
Terima kasih.
sumber
sumber
CATATAN: DALAM BEBERAPA IDE SEBELUM PILIH N ADALAH BEKERJA ATAU, DALAM BEBERAPA IDE TANPA N BEKERJA
sumber
Tidak ada kunci utama di sini, tetapi ini dapat membantu pengguna lain yang hanya ingin memiliki nama tabel dengan nama bidang dan properti bidang dasar
sumber
Saya baru saja membuat marc_s "presentasi siap":
sumber