Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

3 Cara Mendapatkan Tipe Data Kolom di SQL Server (T-SQL)

GUI seperti SSMS atau Azure Data Studio memudahkan untuk melihat tipe data kolom. Biasanya ini masalah navigasi sederhana ke kolom di penjelajah objek dan Anda dapat melihat tipe data tepat di sebelah kolom.

Tetapi jika Anda menggunakan T-SQL, Anda harus menjalankan kueri.

information_schema.columns Lihat

information_schema.columns view adalah pilihan yang baik jika Anda hanya menginginkan tipe data dan tidak lebih:

SELECT 
    COLUMN_NAME, 
    DATA_TYPE, 
    CHARACTER_MAXIMUM_LENGTH AS MAX_LENGTH, 
    CHARACTER_OCTET_LENGTH AS OCTET_LENGTH 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

Contoh hasil:

+---------------+-------------+--------------+----------------+
| COLUMN_NAME   | DATA_TYPE   | MAX_LENGTH   | OCTET_LENGTH   |
|---------------+-------------+--------------+----------------|
| ProductName   | varchar     | 255          | 255            |
+---------------+-------------+--------------+----------------+

Ganti Products dan ProductName dengan nama tabel dan kolom Anda masing-masing.

Oke, saya mengembalikan sedikit lebih dari sekadar tipe data di sini. Tetapi Anda dapat menghilangkan kolom lain jika diperlukan. Atau Anda dapat menambahkan lebih banyak. Misalnya, ada kolom yang berisi presisi kolom jika Anda melihat kolom numerik atau waktu.

Anda dapat mengembalikan semua kolom seperti ini:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

sys.columns Lihat

sys.columns tampilan adalah pilihan lain. Kita dapat menggabungkan ini dengan sys.tables tampilan untuk mendapatkan kolom tertentu dari tabel tertentu:

SELECT 
    c.name,
    type_name(c.system_type_id) AS system_type,
    type_name(c.user_type_id) AS user_type,
    c.max_length,
    c.precision,
    c.scale
FROM sys.tables t 
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = 'Products'
AND c.name = 'ProductName';

Contoh hasil:

+-------------+---------------+-------------+--------------+-------------+---------+
| name        | system_type   | user_type   | max_length   | precision   | scale   |
|-------------+---------------+-------------+--------------+-------------+---------|
| ProductName | varchar       | varchar     | 255          | 0           | 0       |
+-------------+---------------+-------------+--------------+-------------+---------+

Sekali lagi, sertakan lebih banyak atau lebih sedikit kolom sesuai kebutuhan.

Dalam contoh ini, saya menggunakan TYPE_NAME() berfungsi untuk mengembalikan nama tipe data, berdasarkan ID-nya. Ini menyelamatkan saya dari keharusan bergabung di sys.types tabel.

sp_help Prosedur Tersimpan

sp_help prosedur tersimpan dapat berguna jika Anda ingin mengembalikan informasi lebih lanjut tentang tabel.

Prosedur tersimpan ini mengembalikan informasi tentang objek database (objek apa pun yang terdaftar di sys.sysobjects tampilan kompatibilitas), tipe data yang ditentukan pengguna, atau tipe data:

EXEC sp_help Products;

Ini mengembalikan banyak keluaran, jadi saya tidak akan mencantumkan semuanya di sini.

Cukup ganti Products dengan nama tabel atau objek lain yang ingin Anda dapatkan informasinya.

Dapatkan Tipe Data Kolom dari Kueri

Anda juga bisa mendapatkan tipe data kolom yang dikembalikan oleh kueri.

Lihat Menemukan Tipe Data Kolom yang Dikembalikan dalam Kumpulan Hasil di SQL Server untuk informasi dan contoh selengkapnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa yang mewakili ganda di server sql?

  2. Periksa apakah Tabel Direferensikan oleh Kunci Asing di SQL Server dengan OBJECTPROPERTY()

  3. Cari "seluruh kata yang cocok" dengan pola SEPERTI SQL Server

  4. Cara menggunakan klausa Where dalam Select Statement di SQL Server - Tutorial SQL Server / TSQL Bagian 109

  5. Konversi nilai teks di SQL Server dari UTF8 ke ISO 8859-1