Di SQL Server, Anda dapat menggunakan T-SQL REPLACE()
berfungsi untuk mengganti semua instance dari string yang diberikan dengan string lain. Misalnya, Anda dapat mengganti semua kemunculan kata tertentu dengan kata lain.
Sintaks
Berikut sintaks resminya:
REPLACE ( string_expression , string_pattern , string_replacement )
Dimana string_expression
adalah string yang berisi satu atau lebih instance string (atau substring) untuk diganti, string_pattern
adalah string yang akan diganti, dan string_replacement
adalah string untuk menggantikannya.
Contoh
Berikut ini contoh untuk didemonstrasikan:
SELECT REPLACE('My apartment has some art hanging on the walls and some pot plants hanging from the ceiling.', 'some', 'no');
Hasil:
My apartment has no art hanging on the walls and no pot plants hanging from the ceiling.
Jadi dalam contoh ini kita cukup mengganti kata some
dengan kata no
.
Beberapa Kata
Tentu saja, tidak ada aturan yang mengatakan bahwa Anda hanya dapat mengganti satu kata dengan satu kata (dan sebaliknya). Lagi pula, kami hanya mengganti string dengan string lain, terlepas dari apakah string itu berisi kata, huruf, angka, spasi, dll.
Jadi kita bisa dengan mudah mengganti satu kata itu dengan dua kata atau lebih:
SELECT REPLACE('My apartment has some art hanging on the walls and some pot plants hanging from the ceiling.', 'some', 'lots of');
Hasil:
My apartment has lots of art hanging on the walls and lots of pot plants hanging from the ceiling.
Jadi disini kita ganti kata some
dengan kata-kata lots of
.
Menghapus Kata
Anda juga dapat menghapus kata (atau substring) dari string. Untuk melakukannya, cukup ganti dengan string kosong:
SELECT REPLACE('My apartment has some art hanging on the walls and some pot plants hanging from the ceiling.', 'some', '');
Hasil:
My apartment has art hanging on the walls and pot plants hanging from the ceiling.
Namun, jika Anda perhatikan lebih dekat, Anda akan melihat bahwa string baru berisi spasi ganda tempat kami menghapus kata tersebut. Ini karena kata yang kami hapus memiliki spasi di kiri dan kanannya. Kami menghapus kata tersebut tetapi kami tidak menghapus spasi apa pun, oleh karena itu, tersisa dua spasi.
Kami dapat memperbaikinya dengan memasukkan salah satu spasi pada kata yang akan dihapus:
SELECT REPLACE('My apartment has some art hanging on the walls and some pot plants hanging from the ceiling.', 'some ', '');
Hasil:
My apartment has art hanging on the walls and pot plants hanging from the ceiling.
Hati-hati!
Sangat mudah untuk membuat kesalahan saat menggunakan REPLACE()
fungsi (atau apa saja temukan dan ganti fungsionalitas dalam hal ini).
Misalnya, kesalahan ini:
SELECT REPLACE('My apartment has some art hanging on the walls and some pot plants hanging from the ceiling.', 'art', 'pictures');
Hasil:
My appicturesment has some pictures hanging on the walls and some pot plants hanging from the ceiling.
Seperti yang Anda lihat, kami mengganti kata art
dengan pictures
. Namun, dalam hal ini kata apartment
juga terpengaruh – telah berubah menjadi pictures
, yang tidak dimaksudkan. Ini karena kata apartment
berisi substring art
.
Anda biasanya dapat melindungi dari hal ini dengan menambahkan spasi di sekitar kata pencarian, serta kata pengganti:
SELECT REPLACE('My apartment has some art hanging on the walls and some pot plants hanging from the ceiling.', ' art ', ' pictures ');
Hasil:
My apartment has some pictures hanging on the walls and some pot plants hanging from the ceiling.
Ini jelas mengasumsikan bahwa Anda mengganti seluruh kata. Anda harus mengukur setiap situasi saat muncul.
Kolasi/Sensitivitas Huruf Besar
Anda dapat menggunakan COLLATE
opsional klausa untuk menerapkan susunan eksplisit ke input. Ini berguna untuk melakukan operasi temukan/ganti yang peka huruf besar/kecil dan sejenisnya.
Berikut adalah contoh yang membandingkan dua susunan.
Peka Huruf Besar dan Kecil
SELECT REPLACE('Cats, cats, and more cats!' COLLATE SQL_Latin1_General_CP1_CI_AS, 'cat', 'Dog');
Hasil:
Dogs, Dogs, and more Dogs!
Dalam contoh ini, susunan yang kami tentukan termasuk _CI
dalam namanya, yang berarti "Tidak Peka Huruf Besar". Ini menyebabkan semua kemunculan diganti, meskipun kemunculan pertama memiliki karakter huruf besar.
Anda akan melihat bahwa metode ini tidak memengaruhi kasus string yang diganti.
Peka Huruf Besar-kecil
SELECT REPLACE('Cats, cats, and more cats!' COLLATE SQL_Latin1_General_CP1_CS_AS, 'cat', 'Dog');
Hasil:
Cats, Dogs, and more Dogs!
Dalam contoh ini, susunan yang kami tentukan termasuk _CS
dalam namanya, yang berarti "Sensitif Huruf Besar". Ini menyebabkan kemunculan pertama Cat
untuk dilewati, karena karakter pertamanya adalah huruf besar (yang tidak cocok dengan kasus argumen kedua).