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

Gunakan TYPE_NAME() untuk Mendapatkan Nama Tipe Data di SQL Server

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) dalam WHERE klausa (dan di mana saja ekspresi diperbolehkan).

Di sini, saya memodifikasi contoh sebelumnya sehingga saya menggunakan TYPE_NAME() di WHERE 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengekstrak atau Mengonversi Data Waktu dari String di SQL Server

  2. String Format Numerik Standar Didukung oleh FORMAT() di SQL Server

  3. Cara Menemukan Nama Batasan di SQL Server

  4. Apakah ada perbedaan kinerja antara CTE , Sub-Query, Tabel Sementara atau Variabel Tabel?

  5. Paksa Oracle untuk mengembalikan baris TOP N dengan SKIP LOCKED