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

Bagaimana Fungsi FORMAT() Bekerja di SQL Server (T-SQL)

Di SQL Server, Anda dapat menggunakan T-SQL FORMAT() berfungsi untuk mengembalikan nilai seperti angka dan tanggal sebagai string yang diformat.

Anda memberikan nilai yang akan diformat, dan Anda menentukan format yang akan digunakan. Fungsi menerima argumen opsional yang memungkinkan Anda menentukan budaya yang akan digunakan saat memformat nilai.

Sintaks

Sintaksnya seperti ini:

FORMAT ( value, format [, culture ] )

Dimana value adalah nilai yang ingin Anda format, dan format adalah string format valid yang menentukan format yang diinginkan.

culture opsional argumen dapat digunakan untuk menentukan budaya. Jika dihilangkan, bahasa sesi saat ini akan digunakan.

FORMAT fungsi nondeterministik.

Contoh 1 – Memformat Angka

Berikut ini contoh memformat angka:

SELECT FORMAT(1, 'N') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 1.00     |
+----------+

Dalam hal ini, saya menggunakan N sebagai format string. Ini adalah penentu format numerik standar untuk menghasilkan nilai sebagai angka. Penentu format khusus ini menghasilkan output yang diformat dengan angka integral dan desimal, pemisah grup, dan pemisah desimal dengan tanda negatif opsional. Penentu format ini tidak peka huruf besar/kecil, jadi N atau n baik-baik saja.

Contoh 2 – Format ke Mata Uang

Berikut ini contoh pemformatan angka sebagai mata uang:

SELECT FORMAT(1, 'C') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| $1.00    |
+----------+

Format Numerik Lainnya

Ada banyak lagi format string yang dapat digunakan dengan FORMAT() fungsi. Misalnya, ada string format untuk persentase, titik tetap, eksponensial (ilmiah), heksadesimal, dan banyak lagi.

String format numerik dipisahkan menjadi standar dan kustom.

Dua artikel berikut mencantumkan semua string format numerik, termasuk contoh:

  • String Format Numerik Standar
  • String Format Numerik Kustom

Lihat juga Cara Memformat Angka di SQL Server untuk contoh pemformatan angka lainnya.

Contoh 3 – Memformat Tanggal

Berikut ini contoh pemformatan tanggal:

SELECT 
  GETDATE() AS 'Unformatted Date',
  FORMAT( GETDATE(), 'D') AS 'Formatted Date';

Hasil:

+-------------------------+------------------------+
| Unformatted Date        | Formatted Date         |
|-------------------------+------------------------|
| 2019-05-08 06:16:55.613 | Wednesday, May 8, 2019 |
+-------------------------+------------------------+

Dalam hal ini, saya menggunakan D yang menentukan pola tanggal yang panjang.

Format Tanggal Lainnya

Ada banyak lagi format string yang dapat digunakan untuk memformat tanggal. Seperti halnya string format numerik, string format tanggal dan waktu dipisahkan menjadi standar dan kustom, sehingga Anda dapat membuat format kustom Anda sendiri, atau Anda dapat mengandalkan format standar.

Dua artikel berikut mencantumkan semua string format tanggal dan waktu, termasuk contoh:

  • String Format Tanggal dan Waktu Standar
  • String Format Tanggal dan Waktu Khusus

Lihat juga Cara Memformat Tanggal &Waktu di SQL Server untuk contoh lainnya.

Contoh 4 – culture Opsional Argumen

Berikut ini contoh penggunaan culture argumen untuk mengembalikan nilai dalam berbagai mata uang:

SELECT 
    FORMAT(1, 'C', 'fr-FR') AS 'France', 
    FORMAT(1, 'C', 'th-TH') AS 'Thailand', 
    FORMAT(1, 'C', 'ja-JP') AS 'Japan';

Hasil:

+----------+------------+---------+
| France   | Thailand   | Japan   |
|----------+------------+---------|
| 1,00 €   | ฿1.00      | ¥1      |
+----------+------------+---------+

FORMAT() fungsi menerima budaya apa pun yang didukung oleh .NET Framework sebagai argumen; itu tidak terbatas pada bahasa yang secara eksplisit didukung oleh SQL Server.

Jika Anda tidak memberikan argumen ini, bahasa sesi saat ini akan digunakan.

Untuk contoh lainnya, lihat Bagaimana Setelan Bahasa dapat Mempengaruhi FORMAT() . Anda Hasil.

Contoh 5 – culture tidak valid Argumen

Jika Anda memberikan budaya yang tidak valid, Anda akan mendapatkan pesan kesalahan:

SELECT FORMAT(1, 'C', 'oop-SS!') AS 'Oops!';

Hasil:

The culture parameter 'oop-SS!' provided in the function call is not supported.

Contoh 6 – Nilai Format Tidak Valid

Namun, untuk kesalahan lain, fungsi mengembalikan NULL . Misalnya, inilah yang terjadi jika saya memberikan nilai yang tidak valid untuk diformat:

SELECT FORMAT(GETDATE(), 'C') AS 'Result';

Hasil:

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

Dalam hal ini, saya mencoba memformat tanggal menjadi mata uang, dan oleh karena itu hasilnya adalah NULL .

Jenis Data yang Valid

FORMAT() bergantung pada keberadaan .NET Framework Common Language Runtime (CLR), dan menggunakan aturan pemformatan CLR.

Tipe data berikut dapat diformat dengan FORMAT() fungsi. Daftar ini berisi tipe data yang dapat diterima untuk string input bersama dengan tipe ekuivalen pemetaan .NET Framework.

Kategori Ketik .jenis NET
Numerik besar Int64
Numerik int Int32
Numerik kecil Int16
Numerik kecil Byte
Numerik desimal SqlDesimal
Numerik numerik SqlDesimal
Numerik mengambang Ganda
Numerik nyata Lajang
Numerik uang kecil Desimal
Numerik uang Desimal
Tanggal dan Waktu tanggal TanggalWaktu
Tanggal dan Waktu waktu Rentang Waktu
Tanggal dan Waktu waktu tanggal TanggalWaktu
Tanggal dan Waktu waktu kecil TanggalWaktu
Tanggal dan Waktu datetime2 TanggalWaktu
Tanggal dan Waktu datetimeoffset DateTimeOffset

Menghilangkan Titik Dua dan Titik untuk Tipe Data 'waktu'

Saat menggunakan FORMAT , titik dua dan titik harus diloloskan (ini mematuhi aturan pemformatan CLR). Oleh karena itu, bila format string (parameter kedua) berisi titik dua atau titik, titik dua atau titik harus diloloskan dengan garis miring terbalik bila nilai input (parameter pertama) adalah waktu tipe data.

Contoh:

SELECT 
  CAST('12:15' AS time) AS 'Unformatted Data',
  FORMAT(CAST('12:15' AS time), N'hh.mm') AS 'Unescaped',
  FORMAT(CAST('12:15' AS time), N'hh\.mm') AS 'Escaped';

Hasil:

+--------------------+-------------+-----------+
| Unformatted Data   | Unescaped   | Escaped   |
|--------------------+-------------+-----------|
| 12:15:00           | NULL        | 12.15     |
+--------------------+-------------+-----------+

Jadi seperti yang diharapkan, string yang tidak lolos mengembalikan NULL .

Seperti yang disebutkan, ini hanya berlaku untuk waktu tipe data. Jika kita mengubah nilai input ke tipe data yang berbeda, kita tidak perlu menghindarinya:

SELECT 
  CAST('12:15' AS datetime) AS 'Unformatted Data',
  FORMAT(CAST('12:15' AS datetime), N'hh.mm') AS 'Unescaped',
  FORMAT(CAST('12:15' AS datetime), N'hh.mm') AS 'Escaped';

Hasil:

+-------------------------+-------------+-----------+
| Unformatted Data        | Unescaped   | Escaped   |
|-------------------------+-------------+-----------|
| 1900-01-01 12:15:00.000 | 12.15       | 12.15     |
+-------------------------+-------------+-----------+

Dalam hal ini, nilai inputnya adalah datetime , dan oleh karena itu, hasilnya baik-baik saja tanpa menghindarinya.

Anda juga dapat menggunakan garis miring terbalik untuk menghindari karakter lain yang ingin Anda sertakan dalam string hasil, yang jika tidak akan ditafsirkan sebagai penentu format. Mendahului karakter dengan garis miring terbalik menandakan bahwa karakter berikut adalah karakter literal yang harus disertakan dalam string hasil tidak berubah.

Dalam string format tanggal dan waktu khusus, d , f , F , g , h , H , K , m , M , s , t , y , z , : , atau / karakter ditafsirkan sebagai penentu format khusus, bukan sebagai karakter literal.

Dalam string format numerik khusus, # , 0 , . , , , % , dan simbol ditafsirkan sebagai penentu format daripada sebagai karakter literal. Huruf besar dan kecil E serta + dan - simbol juga dapat diartikan sebagai penentu format, tergantung pada posisinya dalam string format.

Jika Anda perlu menyertakan garis miring terbalik dalam string hasil, hindari dengan garis miring terbalik lainnya.

Jarak Jauh

FORMAT() fungsi tidak dapat diremote karena bergantung pada keberadaan CLR. Memindahkan fungsi yang memerlukan CLR, dapat menyebabkan kesalahan pada server jarak jauh.

Kapan Menggunakan FORMAT() Fungsi

Microsoft merekomendasikan bahwa FORMAT() fungsi ini digunakan untuk pemformatan sadar-lokal dari nilai tanggal/waktu dan angka sebagai string, dan untuk konversi tipe data umum, baik CAST() fungsi atau CONVERT() fungsi harus digunakan sebagai gantinya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Metode SqlDataAdapter.Fill lambat

  2. Cara Menangani Kesalahan dalam Transaksi Bersarang SQL Server

  3. Mitos Kinerja SQL Server yang Berbahaya dan Menyebar

  4. Cara Memulihkan Data dari File Log Transaksi SQL Server

  5. Beberapa pernyataan INSERT vs. INSERT tunggal dengan beberapa NILAI