Jika Anda perlu mendapatkan daftar tipe data di SQL Server, Anda dapat menggunakan salah satu tampilan sistem untuk melakukan hal itu.
Secara khusus, Anda dapat menggunakan sys.types
tampilan katalog sistem. Tampilan ini mengembalikan semua tipe data yang disediakan sistem dan ditentukan pengguna yang ditentukan dalam database. Jika Anda menggunakan SQL Server 2000 sys.systypes
harus melakukan trik.
Contoh 1 – sys.types
Lihat
sys.types
view adalah yang terbaik untuk digunakan jika Anda menggunakan versi SQL Server setelah SQL Server 2000.
Cara tercepat/termudah untuk menggunakan sys.types
view adalah untuk memilih semuanya. Dalam hal ini kode Anda mungkin terlihat seperti ini:
SELECT * FROM sys.types;
Namun, ini mengembalikan banyak kolom yang mungkin Anda minati atau tidak. Anda dapat mempersempitnya menjadi hanya kolom yang Anda minati.
Berikut ini contoh memilih beberapa kolom yang diminati:
SELECT name, max_length, [precision], scale, is_user_defined FROM sys.types;
Hasil:
+------------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------------+--------------+-------------+---------+-------------------| | image | 16 | 0 | 0 | 0 | | text | 16 | 0 | 0 | 0 | | uniqueidentifier | 16 | 0 | 0 | 0 | | date | 3 | 10 | 0 | 0 | | time | 5 | 16 | 7 | 0 | | datetime2 | 8 | 27 | 7 | 0 | | datetimeoffset | 10 | 34 | 7 | 0 | | tinyint | 1 | 3 | 0 | 0 | | smallint | 2 | 5 | 0 | 0 | | int | 4 | 10 | 0 | 0 | | smalldatetime | 4 | 16 | 0 | 0 | | real | 4 | 24 | 0 | 0 | | money | 8 | 19 | 4 | 0 | | datetime | 8 | 23 | 3 | 0 | | float | 8 | 53 | 0 | 0 | | sql_variant | 8016 | 0 | 0 | 0 | | ntext | 16 | 0 | 0 | 0 | | bit | 1 | 1 | 0 | 0 | | decimal | 17 | 38 | 38 | 0 | | numeric | 17 | 38 | 38 | 0 | | smallmoney | 4 | 10 | 4 | 0 | | bigint | 8 | 19 | 0 | 0 | | hierarchyid | 892 | 0 | 0 | 0 | | geometry | -1 | 0 | 0 | 0 | | geography | -1 | 0 | 0 | 0 | | varbinary | 8000 | 0 | 0 | 0 | | varchar | 8000 | 0 | 0 | 0 | | binary | 8000 | 0 | 0 | 0 | | char | 8000 | 0 | 0 | 0 | | timestamp | 8 | 0 | 0 | 0 | | nvarchar | 8000 | 0 | 0 | 0 | | nchar | 8000 | 0 | 0 | 0 | | xml | -1 | 0 | 0 | 0 | | sysname | 256 | 0 | 0 | 0 | +------------------+--------------+-------------+---------+-------------------+
Ini adalah tipe data dalam database saat ini. Jika Anda beralih ke database yang berbeda, Anda bisa mendapatkan hasil yang berbeda (ini akan sangat bergantung pada apakah tipe data yang ditentukan pengguna atau tipe data alias telah ditentukan, dan apakah mereka berbeda di antara database atau tidak).
Contoh 2 – Alias &Tipe Data Buatan Pengguna
Pada contoh sebelumnya, saya menyertakan is_user_defined
kolom. Kita dapat melihat bahwa tidak ada tipe data yang ditentukan pengguna atau tipe data alias, karena semuanya memiliki 0
sebagai nilai mereka.
Mari buat tipe data alias, lalu lihat tampilannya di hasil.
Buat tipe data alias:
CREATE TYPE SSN FROM varchar(11) NOT NULL;
Sekarang mari kita jalankan kueri lagi.
SELECT name, max_length, [precision], scale, is_user_defined FROM sys.types;
Hasil:
+------------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------------+--------------+-------------+---------+-------------------| | image | 16 | 0 | 0 | 0 | | text | 16 | 0 | 0 | 0 | | uniqueidentifier | 16 | 0 | 0 | 0 | | date | 3 | 10 | 0 | 0 | | time | 5 | 16 | 7 | 0 | | datetime2 | 8 | 27 | 7 | 0 | | datetimeoffset | 10 | 34 | 7 | 0 | | tinyint | 1 | 3 | 0 | 0 | | smallint | 2 | 5 | 0 | 0 | | int | 4 | 10 | 0 | 0 | | smalldatetime | 4 | 16 | 0 | 0 | | real | 4 | 24 | 0 | 0 | | money | 8 | 19 | 4 | 0 | | datetime | 8 | 23 | 3 | 0 | | float | 8 | 53 | 0 | 0 | | sql_variant | 8016 | 0 | 0 | 0 | | ntext | 16 | 0 | 0 | 0 | | bit | 1 | 1 | 0 | 0 | | decimal | 17 | 38 | 38 | 0 | | numeric | 17 | 38 | 38 | 0 | | smallmoney | 4 | 10 | 4 | 0 | | bigint | 8 | 19 | 0 | 0 | | hierarchyid | 892 | 0 | 0 | 0 | | geometry | -1 | 0 | 0 | 0 | | geography | -1 | 0 | 0 | 0 | | varbinary | 8000 | 0 | 0 | 0 | | varchar | 8000 | 0 | 0 | 0 | | binary | 8000 | 0 | 0 | 0 | | char | 8000 | 0 | 0 | 0 | | timestamp | 8 | 0 | 0 | 0 | | nvarchar | 8000 | 0 | 0 | 0 | | nchar | 8000 | 0 | 0 | 0 | | xml | -1 | 0 | 0 | 0 | | sysname | 256 | 0 | 0 | 0 | | SSN | 11 | 0 | 0 | 1 | +------------------+--------------+-------------+---------+-------------------+
Tipe data baru muncul (di bagian bawah). Ini juga memiliki nilai 1
di is_user_defined
kolom.
sys.systypes
Lihat
Ada juga sys.systypes
tampilan kompatibilitas sistem, yang hanya disediakan untuk kompatibilitas mundur. Ini karena systypes
adalah nama tabel sistem di SQL Server 2000, dan mungkin ada banyak sistem lama di luar sana dengan kode yang merujuk tabel itu.
Microsoft telah menunjukkan bahwa sys.systypes
tampilan kompatibilitas sistem akan dihapus dalam versi Microsoft SQL Server yang akan datang, dan oleh karena itu merekomendasikan agar Anda menghindari penggunaan tampilan ini dalam pekerjaan baru.
Dengan kata lain, gunakan sys.types
sebagai gantinya jika kamu bisa.
Tetapi jika Anda masih menggunakan versi SQL Server yang lebih lama, Anda harus menggunakan sys.systypes
.
Perhatikan bahwa sys.systypes
berisi kolom/nama kolom yang berbeda untuk sys.types
, jadi nama kolom yang saya gunakan pada contoh sebelumnya tidak akan berfungsi.
Anda masih dapat memilih semua kolom menggunakan tanda bintang (*
) karakter wildcard:
SELECT * FROM sys.systypes;