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

Cara Mengganti Semua Kemunculan String dengan String lain di SQL Server – REPLACE ()

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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INT vs Unique-Identifier untuk bidang ID di database

  2. Bagaimana cara saya terhubung ke database SQL Server 2008 menggunakan JDBC?

  3. Apa itu Fungsi Bernilai Tabel di SQL Server?

  4. Saya ingin menggunakan pernyataan CASE untuk memperbarui beberapa catatan di sql server 2005

  5. SQL Server 2008:bagaimana cara memberikan hak istimewa ke nama pengguna?