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

Gunakan TYPE_ID() untuk Mendapatkan ID Tipe Data di SQL Server

Di SQL Server, Anda dapat menggunakan TYPE_ID() berfungsi untuk mengembalikan ID suatu tipe data, berdasarkan namanya. Ini bisa berguna saat menanyakan tampilan sistem yang menyimpan ID tipe data tetapi bukan namanya. Biasanya lebih mudah untuk mengingat nama. Tidak mudah mengingat ID.

Anda dapat menggunakan TYPE_ID() untuk tipe data sistem dan tipe data yang ditentukan pengguna.

Contoh 1 – Penggunaan Dasar

Berikut adalah contoh dasar untuk mendemonstrasikan cara kerjanya.

SELECT TYPE_ID('varchar') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 167      |
+----------+

Hasil ini memberi tahu kita bahwa varchar tipe data memiliki ID 167.

Contoh 2 – Contoh Basis Data

Berikut ini contoh penggunaan TYPE_ID() dalam WHERE klausa untuk memfilter hasil ke tipe data tertentu saja.

SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  c.user_type_id AS [Type ID],
  TYPE_NAME(c.user_type_id) AS [Type Name]
FROM sys.objects AS o   
JOIN sys.columns AS c  ON o.object_id = c.object_id
JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.user_type_id = TYPE_ID('varchar');

Hasil:

+---------------+---------------+-----------+-------------+
| Object Name   | Column Name   | Type ID   | Type Name   |
|---------------+---------------+-----------+-------------|
| Individual    | FirstName     | 167       | varchar     |
| Individual    | LastName      | 167       | varchar     |
| Occupation    | JobTitle      | 167       | varchar     |
| Event         | EventName     | 167       | varchar     |
| Scoreboard    | Player        | 167       | varchar     |
| Team          | TeamName      | 167       | varchar     |
| Client        | FirstName     | 167       | varchar     |
| Client        | LastName      | 167       | varchar     |
| Colors        | ColorName     | 167       | varchar     |
+---------------+---------------+-----------+-------------+

Anda akan melihat bahwa saya juga menggunakan TYPE_NAME() dalam contoh ini untuk mengembalikan nama berdasarkan ID-nya.

Contoh 3 – Jenis Buatan Pengguna

Anda juga dapat menggunakan TYPE_ID() untuk tipe yang ditentukan pengguna. Berikut adalah contoh yang menyertakan alias tipe yang ditentukan pengguna dalam hasil.

SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  c.user_type_id AS [Type ID],
  TYPE_NAME(c.user_type_id) AS [Type Name],
  CASE 
    WHEN t.is_user_defined = 1 THEN 'Yes'
    ELSE 'No' 
  END AS [User Defined?]
FROM sys.objects AS o   
JOIN sys.columns AS c  ON o.object_id = c.object_id
JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.user_type_id = TYPE_ID('varchar')
OR c.user_type_id = TYPE_ID('clientcode');

Hasil:

+---------------+---------------+-----------+-------------+-----------------+
| Object Name   | Column Name   | Type ID   | Type Name   | User Defined?   |
|---------------+---------------+-----------+-------------+-----------------|
| Individual    | FirstName     | 167       | varchar     | No              |
| Individual    | LastName      | 167       | varchar     | No              |
| Occupation    | JobTitle      | 167       | varchar     | No              |
| Event         | EventName     | 167       | varchar     | No              |
| Scoreboard    | Player        | 167       | varchar     | No              |
| Team          | TeamName      | 167       | varchar     | No              |
| Client        | ClientCode    | 257       | clientcode  | Yes             |
| Client        | FirstName     | 167       | varchar     | No              |
| Client        | LastName      | 167       | varchar     | No              |
| Colors        | ColorName     | 167       | varchar     | No              |
+---------------+---------------+-----------+-------------+-----------------+

Di sini jenis kode klien adalah alias jenis yang ditentukan pengguna, dan itu is_user_defined bendera adalah 1 . Dalam hal ini saya menggunakan CASE ekspresi untuk mengembalikan Yes (dan untuk mengembalikan No jika 0 ).

Contoh 4 – Jenis Tidak Valid atau Izin Tidak Memadai

Jika Anda memberikan nama jenis yang tidak valid atau Anda tidak memiliki izin yang memadai untuk mereferensikan jenis tersebut, hasilnya adalah NULL.

SELECT TYPE_ID('oops') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemulihan cadangan database SQL Server pada versi yang lebih rendah

  2. bagaimana cara mendapatkan tanggal mulai dan akhir semua minggu antara dua tanggal di server SQL?

  3. Cara MENGUBAH beberapa kolom sekaligus di SQL Server

  4. Inner Bergabung dengan tiga tabel

  5. Mengapa menggunakan kunci utama bukan nol di TSQL?