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

5 Fakta Teratas untuk Menemukan dan Mengganti Teks SQL di SQL Server dengan Fungsi REPLACE

Editor kode dan pengolah kata saat ini hadir dengan fitur pencarian dan penggantian. Akan sangat membantu ketika Anda perlu mengubah kata atau sekelompok kata. Kami tidak ingin membuang karya tulis kami untuk masalah kecil atau perubahan.

Hal yang sama berlaku untuk data kami. Pengguna akan mengutuk kami jika kami memberi tahu mereka untuk mengedit apa yang perlu diganti namanya. Itu sebabnya fitur pencarian dan penggantian juga tersedia untuk menggantikan teks yang tertulis di database kami. Di sini perintah REPLACE dalam SQL masuk.

Sintaks REPLACE dalam SQL adalah sebagai berikut:

GANTI ( , , )

Perhatikan bahwa semua parameter diperlukan. dapat berupa string literal atau string hasil dari suatu ekspresi. Dalam tabel database, kami biasanya melewati kolom string di mana kami ingin nilainya berubah. Sementara itu, adalah string di dalam Anda ingin mencari. Terakhir, Anda melewati yang akan menggantikan . Sederhana, cukup, bukan?

Tapi mungkin ada beberapa peringatan. Dengan cara ini, Anda dapat mengetahui cara menghindari penggantian kata yang salah atau cara menghindari penyisipan rekaman duplikat di SQL Server. Atau, mungkin, tidak mengganti kata-kata yang tepat. Kemudian mengacaukan data Anda pada akhirnya.

Apakah Anda baru mengenal SQL REPLACE? Ini lembar contekan GRATIS untuk Anda. Cukup masukkan alamat email Anda di bawah ini, dan kami akan mengirimkannya langsung ke kotak masuk Anda.

Terdengar keren? Mari kita gali.

[sendpulse-form id="12251″]

1. SQL REPLACE Mengganti Teks untuk SEMUA Kejadian

Betul sekali. Ini menyapu seluruh teks Anda dengan string yang ingin Anda cari. Biarkan saya menunjukkannya kepada Anda dan menjelaskan masalahnya. Lihat contoh di bawah ini:

SELECT REPLACE('know the unknown','know','seek'); 
-- OUTPUT: 'seek the unseekn. Surprise!

tahu string ada dua kali, dalam kata-kata tahu dan tidaktahu n. Jika Anda tidak hati-hati, kesalahan ejaan akan menyusup ke dalam data Anda. Sebagai gantinya, Anda dapat menambahkan ruang untuk mencari kata-kata lengkap saja. Berikut kode yang dimodifikasi:

SELECT REPLACE('know the unknown','know ','seek ');   
-- OUTPUT: 'seek the unknown'.

Jauh lebih baik? Mungkin ada skenario lain, tetapi Anda mengerti maksudnya.

2. SQL REPLACE Dapat Menghapus Teks

Sudahkah Anda mencoba mengganti kata dengan apa pun di editor teks? Atau mungkin Anda ingin menghapus duplikat di SQL? Itu juga terjadi di SQL REPLACE. Ini contohnya:

USE AdventureWorks
GO

SELECT
 EmailAddress
,REPLACE(EmailAddress,'-','') AS NewEmailAddress
FROM person.EmailAddress;

Kolom pertama berisi nama domain alamat email asli. Yang kedua menghapus tanda hubung dari nama domain asli. Lihat tangkapan layar di bawah ini:

Jika Anda perlu menghapus satu atau lebih karakter dari string asli, gunakan string SQL kosong sebagai pengganti. Anda juga dapat menghapus rekaman duplikat dalam SQL dengan cara ini.

3. Collation Mempengaruhi Hasil SQL REPLACE

Saat Anda menginstal SQL Server, pemeriksaan default digunakan. Pada gilirannya, ini akan digunakan oleh database dan kolom tabel Anda. Gambar 2 menunjukkan yang saya gunakan:

Di laptop saya, saya menggunakan SQL_Latin1_CP1_CI_AS . Ini adalah susunan case-insensitive. (Lihat juga CI dalam nama susunan untuk c as saya nsensitif). Oleh karena itu, kata-kata Anjing , anjing , Anjing , dan anjing akan diperlakukan sama.

Mari kita coba beraksi:

DECLARE @string VARCHAR(200) = 'Cats are great pets 
and so easy to take care of. They make good companions. 
Having a cat around is good for children.';

SELECT REPLACE(@string,'cat','dog');

Dan hasilnya adalah:

Fitur REPLACE menemukan kata Kucing di Kucing s di kalimat pertama dan kata kucing dalam kalimat terakhir. Tidak relevan jika hurufnya besar atau kecil.

Namun, jika kita memaksa perubahan susunan menjadi case-sensitive dalam REPLACE, apa yang akan terjadi? Berikut kode menggunakan COLLATE dalam REPLACE:

DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';

-- force a change to a case-sensitive collation. '_CS_' for case-sensitive
SELECT REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog'); 

Dan inilah hasilnya:

Anda sekarang melihat bagaimana susunan mempengaruhi hasilnya. Kucing dan kucing sekarang diperlakukan berbeda. Paragraf menjadi membingungkan. Jadi, pelajarannya adalah menggunakan collation dengan hati-hati.

4. Anda Dapat Mengganti SQL Nest

Anda dapat mengganti kata-kata yang sudah Anda ganti dengan menyarangkan fungsi REPLACE. Ini contohnya:

USE AdventureWorks
GO

SELECT 
 definition
,REPLACE(REPLACE(definition,'CREATE PROCEDURE','ALTER PROCEDURE'),'BusinessEntityID','BusinessEntityNo')
FROM sys.sql_modules a
INNER JOIN sys.objects b ON a.object_id = b.object_id
WHERE a.definition LIKE '%BusinessEntityID%'
AND b.type = 'P';

Contoh di atas menggunakan REPLACE dalam REPLACE. Yaitu mengubah BUAT PROSEDUR untuk UBAH PROSEDUR lalu BusinessEntityID ke BusinessEntityNo .

Kueri akan memengaruhi prosedur tersimpan yang menggunakan BusinessEntityID kolom. Ini berguna saat Anda ingin mengganti nama kolom dalam tabel dan mengganti kode database yang terpengaruh. Parameter prosedur tersimpan juga terpengaruh, tetapi Anda dapat memilih untuk menggantinya untuk menjaga konsistensi penamaan.

Perhatikan bahwa sebelum menjalankan pernyataan ALTER Anda perlu memeriksa perubahan yang akan diterapkan. Anda tidak ingin mengacaukan segalanya, bukan?

Sementara itu, REPLACE bersarang juga dapat memperbaiki masalah yang kita alami sebelumnya pada kucing dan anjing . Inilah perbaikannya:

DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';

SELECT REPLACE(REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog') COLLATE SQL_Latin1_General_CP1_CS_AS,'Cat','Dog');

Lihat hasil baru:

Perhatikan juga bahwa masalah kapitalisasi pada Gambar 3 juga telah diperbaiki.

5. Gunakan dengan UPDATE untuk Menyimpan Teks yang Diganti

Sejauh ini, kami hanya menggunakan SQL REPLACE dengan kueri SELECT. Ini hanya akan memungkinkan kita untuk melihat output dari REPLACE. Untuk menyimpan outputnya, Anda juga perlu mengeluarkan UPDATE. Ini contohnya:

USE AdventureWorks
GO

UPDATE Person.EmailAddress
 SET EmailAddress= REPLACE(EmailAddress,'-','');

Berikut contoh lain menggunakan MySQL yang melibatkan blog_posts tabel di WordPress. Lihat bagaimana Anda dapat mengganti URL pribadi dengan URL publik:

-- View the possible results
SELECT 
 guid 
,REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net') AS NewGUID
FROM blog_posts
WHERE post_date > '2020-10-01';

-- Update the blog_posts table by replacing localhost with a fictitious URL
UPDATE blog_posts
set guid = REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net')
WHERE post_date > '2020-10-01';

Hasil set untuk pernyataan pertama di atas dapat dilihat di bawah menggunakan dbForge Studio for MySQL:

Kesimpulan

Sejauh ini baik. Anda melihat apa yang dapat dilakukan REPLACE di SQL dalam tindakan. Ini dapat memberikan ide ketika Anda perlu mengubah alamat email dan URL. jika Anda mengganti nama kolom dalam tabel yang digunakan dalam prosedur tersimpan, tampilan, atau sinonim.

Mari kita rekap:

  • SQL REPLACE dapat menggantikan teks untuk SEMUA kemunculan.
  • Itu juga dapat menghapus sebagian teks.
  • Setelan susunan dapat memengaruhi keluaran REPLACE.
  • Anda dapat menggabungkan penggunaan SQL REPLACE.
  • Terakhir, gunakan UPDATE untuk menyimpan teks yang diganti.

Jika Anda menyukai postingan ini, silakan bagikan ke media sosial favorit Anda. Beri tahu kami juga pendapat Anda di bagian komentar di bawah.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih N baris di SQL Server

  2. Dapatkah INNER JOIN menawarkan kinerja yang lebih baik daripada EXISTS

  3. Membandingkan Cloud Virtual Machines dengan Managed Cloud Database

  4. UNIX_TIMESTAMP di SQL Server

  5. Bagaimana Transaksi Implisit Bekerja di SQL Server