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

Cara Mengembalikan Daftar Tipe Data di SQL Server (T-SQL)

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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa UDF jauh lebih lambat daripada subquery?

  2. SQL Server 2016:Simpan Hasil Kueri ke File CSV

  3. Cara mengambil nama bidang dari tabel sementara (SQL Server 2008)

  4. Hapus SCHEMABINDING dari Fungsi Buatan Pengguna di SQL Server

  5. DATETIMEOFFSETFROMPARTS() Contoh di SQL Server (T-SQL)