Di SQL Server, Anda dapat menggunakan TYPE_NAME()
berfungsi untuk mengembalikan nama tipe data, berdasarkan ID-nya. Ini bisa berguna saat menanyakan tampilan sistem seperti sys.columns
yang mengembalikan ID jenis tetapi bukan namanya.
Anda dapat menggunakan TYPE_NAME()
untuk tipe data sistem dan tipe data yang ditentukan pengguna.
Contoh 1 – Penggunaan Dasar
Berikut adalah contoh dasar untuk mendemonstrasikan cara kerjanya.
PILIH TYPE_NAME(34) SEBAGAI Hasil;
Hasil:
+----------+| Hasil ||----------|| gambar |+----------+
Hasil ini memberi tahu kita bahwa ID jenis 34 digunakan untuk gambar ketik.
Contoh 2 – Contoh yang Lebih Berguna
Ini contoh yang lebih berguna.
GUNAKAN Musik;PILIH o.name AS [Object Name], c.name AS [Column Name], TYPE_NAME(c.user_type_id) AS [Type Name] FROM sys.objects SEBAGAI JOIN sys.columns AS c ON o .object_id =c.object_idWHERE o.type_desc ='USER_TABLE';
Hasil:
+---------------+---------------+-------------+ | Nama Objek | Nama Kolom | Ketik Nama ||---------------+---------------+-------------| | Artis | Id Artis | int || Artis | Nama Artis | nvarchar || Artis | AktifDari | tanggal || Artis | ID Negara | int || Genre | GenreId | int || Genre | Genre | nvarchar || Album | Id Album | int || Album | Nama Album | nvarchar || Album | Tanggal Rilis | tanggal || Album | Id Artis | int || Album | GenreId | int || Negara | ID Negara | int || Negara | Nama Negara | nvarchar |+---------------+---------------+-------------+Kueri ini mengembalikan tabel pengguna, beserta kolomnya dan tipe data untuk setiap kolom.
Begini tampilannya jika saya menghapus
TYPE_NAME()
:GUNAKAN Musik;PILIH o.name AS [Object Name], c.name AS [Column Name], c.user_type_id FROM sys.objects AS o GABUNG sys.columns AS c PADA o.object_id =c.object_idWHERE o. type_desc ='USER_TABLE';Hasil:
+---------------+---------------+-------------- --+| Nama Objek | Nama Kolom | user_type_id ||---------------+---------------+--------------- -|| Artis | Id Artis | 56 || Artis | Nama Artis | 231 || Artis | AktifDari | 40 || Artis | ID Negara | 56 || Genre | GenreId | 56 || Genre | Genre | 231 || Album | Id Album | 56 || Album | Nama Album | 231 || Album | Tanggal Rilis | 40 || Album | Id Artis | 56 || Album | GenreId | 56 || Negara | ID Negara | 56 || Negara | Nama Negara | 231 |+---------------+---------------+--------------- -+Tidak semudah membaca ID jenisnya.
Contoh 3 – Jenis Buatan Pengguna
Jenis yang ditentukan pengguna disertakan. Berikut adalah contoh yang menyertakan alias tipe yang ditentukan pengguna dalam hasil.
USE Test;SELECT o.name AS [Object Name], c.name AS [Column Name], TYPE_NAME(c.user_type_id) AS [Type Name], CASE WHEN t.is_user_defined =1 THEN 'Yes' ELSE ' Tidak' END AS [Ditetapkan Pengguna?]FROM sys.objects AS o GABUNG sys.columns AS c ON o.object_id =c.object_idJOIN sys.types t ON c.user_type_id =t.user_type_idWHERE o.type_desc' DAN USER_TABLE .name ='Klien';Hasil:
+---------------+---------------+-------------+ -----------------+| Nama Objek | Nama Kolom | Ketik Nama | Ditetapkan pengguna? ||---------------+---------------+-------------+-- ---------------|| Klien | Kode Klien | kode klien | Ya || Klien | Nama Depan | varchar | Tidak || Klien | Nama Belakang | varchar | Tidak |+---------------+---------------+-------------+- ----------------+Contoh 4 – Menggunakan TYPE_NAME() dalam Klausa WHERE
Anda dapat menggunakan
TYPE_NAME()
(dan fungsi sistem lainnya) dalamWHERE
klausa (dan di mana saja ekspresi diperbolehkan).Di sini, saya memodifikasi contoh sebelumnya sehingga saya menggunakan
TYPE_NAME()
diWHERE
klausa.USE Test;SELECT o.name AS [Object Name], c.name AS [Column Name], TYPE_NAME(c.user_type_id) AS [Type Name], CASE WHEN t.is_user_defined =1 THEN 'Yes' ELSE ' Tidak' AKHIR SEBAGAI [Ditetapkan Pengguna?]DARI sys.objects SEBAGAI GABUNG sys.columns AS c ON o.object_id =c.object_idJOIN sys.types t ON c.user_type_id =t.user_type_idWHERE TYPE_NAME(c.user'type_id) ';Hasil:
+---------------+---------------+-------------+ -----------------+| Nama Objek | Nama Kolom | Ketik Nama | Ditetapkan pengguna? ||---------------+---------------+-------------+-- ---------------|| Klien | Kode Klien | kode klien | Ya |+---------------+---------------+-------------+- ----------------+Contoh 5 – ID Jenis Tidak Valid atau Izin Tidak Memadai
Jika Anda memberikan ID jenis yang tidak valid atau Anda tidak memiliki izin yang memadai untuk mereferensikan jenis tersebut, hasilnya adalah NULL.
PILIH TYPE_NAME(258) SEBAGAI Hasil;Hasil:
+----------+| Hasil ||----------|| NULL |+----------+Dapatkan ID Jenis
Jika Anda sudah mengetahui nama tipe datanya, tetapi menginginkan ID-nya, Anda dapat menggunakan
TYPE_ID()
untuk mengembalikan ID tipe data berdasarkan namanya.