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

Bagaimana CAST() Bekerja di SQL Server

Di SQL Server, CAST() fungsi mengonversi ekspresi dari satu tipe data ke tipe data lainnya.

Berikut ini ikhtisar singkat tentang fungsi dengan contoh.

Sintaks

Sintaksnya seperti ini:

CAST ( expression AS data_type [ ( length ) ] )  

Dimana expression adalah ekspresi yang akan dikonversi, data_type adalah tipe data baru, dan length adalah panjang opsional untuk tipe data baru.

Contoh

Berikut ini contoh casting string sebagai desimal:

SELECT CAST('007' AS DECIMAL(5,2));

Hasil:

7.00

String hingga Tanggal

Berikut ini contoh casting string ke tanggal:

SELECT CAST('09 Feb 2030' AS date);

Hasil:

2030-02-09

Dalam hal ini CAST() function dapat menentukan bagian tanggal yang mana karena saya memberikan tanggal dalam format yang dikenalinya.

Meneruskan nilai yang tidak dapat diberikan sebagai tanggal akan menyebabkan kesalahan:

SELECT CAST('Next Xmas' AS date);

Hasil:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Lokal

Bahasa sesi saat ini dapat membuat perbedaan dalam interpretasi tanggal.

Inilah yang terjadi saat menggunakan bahasa Inggris:

SET LANGUAGE British;
SELECT CAST('09/02/2030' AS date);

Hasil:

2030-02-09

Dalam hal ini, tanggal tersebut ditafsirkan sebagai hari kesembilan Februari.

Mari kita ubah bahasanya menjadi us_English :

SET LANGUAGE us_English;
SELECT CAST('09/02/2030' AS date);

Hasil:

2030-09-02

Kali ini menafsirkan tanggal sebagai hari kedua bulan September.

Penggabungan String

Berikut ini contoh casting nilai numerik ke string untuk menggabungkan nilai dengan string:

SELECT 'Likes: ' + CAST(178 AS VARCHAR(10));

Hasil:

Likes: 178

Inilah yang terjadi jika kita tidak mentransmisikannya:

SELECT 'Likes: ' + 178;

Hasil:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Likes: ' to data type int.

Saat mencoba menggabungkan dua nilai dengan tipe data yang berbeda, SQL Server perlu secara implisit mengonversi salah satu nilai untuk menggunakan tipe data yang lain, sehingga keduanya adalah tipe data yang sama sebelum dapat melakukan penggabungan. Ini mengikuti aturan prioritas tipe data untuk melakukan konversi ini.

Di SQL Server, INT tipe data memiliki prioritas lebih tinggi daripada VARCHAR .

Oleh karena itu, dalam contoh di atas, SQL Server mencoba mengonversi string menjadi bilangan bulat. Tapi ini gagal karena string tidak dapat dikonversi ke integer.

Memotong Teks

Satu trik kecil praktis yang dapat kita lakukan dengan CAST() fungsinya adalah untuk memotong string yang lebih panjang ke panjang yang lebih mudah dibaca.

Berikut ini contoh pemotongan teks yang dipilih dari tabel database:

SELECT
    ProductName,
    CAST(ProductName AS VARCHAR(20)) AS Truncated
FROM Products;

Hasil:

+---------------------------------+----------------------+
| ProductName                     | Truncated            |
|---------------------------------+----------------------|
| Left handed screwdriver         | Left handed screwdri |
| Long Weight (blue)              | Long Weight (blue)   |
| Long Weight (green)             | Long Weight (green)  |
| Sledge Hammer                   | Sledge Hammer        |
| Chainsaw                        | Chainsaw             |
| Straw Dog Box                   | Straw Dog Box        |
| Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu |
| Right handed screwdriver        | Right handed screwdr |
+---------------------------------+----------------------+

Informasi Lebih Lanjut

CAST() fungsi bekerja dengan cara yang mirip dengan CONVERT() fungsi, dan banyak konversi data dapat dilakukan menggunakan salah satunya. Konon, ada perbedaan di antara mereka.

Lihat dokumentasi Microsoft untuk CAST() dan CONVERT() untuk informasi lebih detail tentang penggunaan fungsi ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menambahkan identitas ke kolom yang ada

  2. Apakah mungkin menjalankan beberapa pernyataan DDL di dalam transaksi (dalam SQL Server)?

  3. Studio Manajemen SQL Server (SSMS)

  4. Cara Menghentikan/Memulai Antrian Surat Database di SQL Server (T-SQL)

  5. Apa yang setara dengan bigint di C#?