If-Koubou

Cari Baris Dengan Karakter Khusus di SQL Server

Cari Baris Dengan Karakter Khusus di SQL Server (Bagaimana caranya)

Saat memecahkan masalah pemrograman hari ini saya perhatikan bahwa Anda tidak dapat menggunakan pencarian LIKE untuk kolom string yang berisi karakter khusus seperti% atau _ tanpa menggunakan sintaks khusus. Mengetahui masalah hanya memerlukan beberapa menit, tetapi mengingat sintaks selalu lebih mudah jika Anda menulis tentang hal itu.

Jadi ya, postingan ini semata-mata untuk keuntungan saya. Semoga itu akan membantu orang lain juga.

Katakanlah Anda ingin menemukan bidang apa pun yang berisi teks “100%”, sehingga Anda mengumpulkan kueri ini:

SELECT * FROM tablename WHERE fieldname LIKE '% 100 %%'

Alih-alih apa yang Anda inginkan, Anda akan mendapatkan semua baris yang berisi "100" serta baris yang berisi "100%".

Masalahnya di sini adalah bahwa SQL Server menggunakan tanda persen, underscore, dan tanda kurung sebagai karakter khusus. Anda tidak bisa menggunakannya sebagai karakter biasa dalam permintaan SEPERTI tanpa melarikan diri.

Square Bracket Escape

Anda dapat mengelilingi% atau _ dengan tanda kurung siku untuk memberitahu SQL Server bahwa karakter di dalamnya adalah karakter biasa.

SELECT * FROM tablename WHERE fieldname LIKE '% 100 [%]%'

T-SQL ESCAPE Syntax

Atau, Anda dapat menambahkan operator ESCAPE ke dalam kueri Anda, dan menambahkan \ karakter sebelum nilai yang ingin Anda hindari.

SELECT * FROM tablename WHERE fieldname LIKE '% 100 \ %%' ESCAPE '\'

Bagian ESCAPE '\ dari permintaan memberitahu mesin SQL untuk menafsirkan karakter setelah \ sebagai karakter literal, bukan sebagai wildcard.

Secara pribadi saya menemukan metode kedua lebih mudah untuk ditangani, dan Anda dapat menggunakannya untuk melarikan diri dari braket persegi juga.