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

Ganti Beberapa Karakter dalam sebuah String di SQL Server (T-SQL)

Di SQL Server, REPLACE() fungsi memungkinkan kita untuk mengganti string dengan string lain. Tetapi bagaimana jika Anda ingin mengganti daftar karakter dengan daftar karakter lain?

TRANSLATE() fungsi mungkin membantu.

Berikut penjelasan Microsoft tentang TRANSLATE() fungsi:

Mengembalikan string yang diberikan sebagai argumen pertama setelah beberapa karakter yang ditentukan dalam argumen kedua diterjemahkan ke dalam kumpulan karakter tujuan yang ditentukan dalam argumen ketiga.

Bening seperti lumpur?

Contoh

Saya pikir ini adalah salah satu waktu yang benar-benar meneriakkan contoh.

SELECT TRANSLATE('Fred [10 points]', '[]', '()');

Hasil:

Fred (10 points)

Pada dasarnya, seolah-olah kami telah menyediakan daftar nilai untuk menggantikan daftar nilai lainnya. Tetapi tidak perlu memisahkan setiap item daftar dengan pemisah.

Jumlah Karakter Sama

Argumen kedua dan ketiga harus berisi jumlah karakter yang sama.

Dengan kata lain, Anda tidak dapat melakukan ini:

SELECT TRANSLATE('Fred [10 points]', '[]', '(');

Hasil:

Msg 9828, Level 16, State 1, Line 1
The second and third arguments of the TRANSLATE built-in function must contain an equal number of characters.

Dalam hal ini argumen kedua berisi dua karakter tetapi argumen ketiga hanya berisi satu, jadi kita mendapatkan kesalahan.

Ini terjadi karena SQL Server perlu mengetahui karakter mana yang menggantikan karakter kedua dari argumen kedua. Ia melewati setiap karakter, satu per satu, menggantikannya dengan karakter yang sesuai dari argumen ketiga. Jika tidak ada, maka tidak ada pilihan selain membuat kesalahan.

Dibandingkan dengan REPLACE()

Berikut adalah contoh yang menggambarkan perbedaan antara TRANSLATE() dan REPLACE() .

SELECT 
  REPLACE('[] [hey]', '[]', '()') AS REPLACE,
  TRANSLATE('[] [hey]', '[]', '()') AS TRANSLATE;

Hasil:

+-----------+-------------+
 | REPLACE   | TRANSLATE   |
 |-----------+-------------|
 | () [hey]  | () (hey)    |
 +-----------+-------------+ 

REPLACE() fungsi meninggalkan [hey] persis seperti itu, karena seluruh string itu tidak disediakan dalam argumen kedua. Fungsi ini hanya menemukan kecocokan jika seluruh string ada.

TRANSLATE() fungsi di sisi lain menggantikan [hey] dengan (hey) karena menggantikan setiap karakter satu per satu. Itu tidak mencari seluruh string untuk diganti, itu hanya mencari setiap karakter individu secara individual.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATEDIFF() Contoh di SQL Server

  2. TSQL - Tambahkan Kolom ke Semua Tabel di Database [ Contoh Kursor]

  3. Cara menggunakan parameter dengan LIKE di Sql Server Compact Edition

  4. Apa string koneksi sql yang perlu saya gunakan untuk mengakses localhost\SQLEXPRESS dengan Otentikasi Windows atau Otentikasi SQL?

  5. Kembalikan Semua Filegroups untuk Database Saat Ini di SQL Server