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;