Cari Baris Dengan Karakter Khusus di SQL Server
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. Mencari tahu masalahnya hanya butuh 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%", jadi Anda membuat kueri ini:
PILIH * DARI tablename DI MANA fieldname SEPERTI '% 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 persenan, garis bawah, dan tanda kurung kotak sebagai karakter khusus. Anda tidak bisa menggunakannya sebagai karakter biasa dalam permintaan LIKE tanpa melarikan mereka.
Bracket Square Escape
Anda dapat mengelilingi% atau _ dengan tanda kurung siku untuk memberi tahu SQL Server bahwa karakter di dalamnya adalah karakter biasa.
PILIH * DARI tablename DI MANA fieldname SEPERTI '% 100 [%]%'
Sintaks T-SQL ESCAPE
Atau, Anda dapat menambahkan operator ESCAPE ke permintaan Anda, dan menambahkan \ karakter sebelum nilai yang ingin Anda hindari.
PILIH * DARI tablename MANA fieldname SEPERTI '% 100 \ %%' ESCAPE '\'
Bagian ESCAPE '\' dari permintaan memberitahu mesin SQL untuk menafsirkan karakter setelah \ sebagai karakter literal alih-alih sebagai wildcard.
Secara pribadi saya menemukan metode kedua lebih mudah untuk ditangani, dan Anda dapat menggunakannya untuk menghindari braket persegi juga.