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