Bagaimana cara saya keluar dari tanda persentase dalam T-SQL?

188

Pertanyaan ini juga memiliki jawabannya , tetapi ia menyebutkan DB2 secara khusus.

Bagaimana cara mencari string menggunakanLIKE yang sudah memiliki %simbol persen di dalamnya? The LIKEpenggunaan Operator %simbol untuk menandakan wildcard.

Jedidja
sumber

Jawaban:

285

Gunakan tanda kurung. Jadi untuk mencari 75%

WHERE MyCol LIKE '%75[%]%'

Ini lebih sederhana daripada ESCAPE dan umum untuk sebagian besar RDBMS.

gbn
sumber
2
juga perhatikan Anda tidak perlu melarikan diri simbol persen dalam konstruksi lain seperti fungsi pengguna, penggabungan, dll.
Bron Davies
2
Anda dapat melarikan diri juga karakter wildcard garis bawah terlalu: [_]. Bagaimana cara Anda keluar dari braket kotak yang terbuka itu? Seperti ini: [[]. sqlserver2000.databases.aspfaq.com/…
Csaba Toth
Menggunakan klausa ESCAPE lebih mudah dipahami daripada mekanisme penawaran MS yang rusak otak.
Suncat2000
52

Anda dapat menggunakan ESCAPEkata kunci dengan LIKE. Cukup tambahkan karakter yang diinginkan (mis. '!') Ke setiap %tanda yang ada di string dan kemudian tambahkan ESCAPE '!'(atau karakter pilihan Anda) ke akhir kueri.

Sebagai contoh:

SELECT *
FROM prices
WHERE discount LIKE '%80!% off%'
ESCAPE '!'

Ini akan membuat basis data memperlakukan 80% sebagai bagian sebenarnya dari string untuk mencari dan bukan 80 (wildcard).

MSDN Documents untuk LIKE

Jedidja
sumber
14
WHERE column_name LIKE '%save 50[%] off!%'
Aaron Bertrand
sumber
0

Di MySQL ,

WHERE column_name LIKE '%|%%' ESCAPE '|'

Kishan Solanki
sumber
Tetapi pertanyaannya adalah tentang T-SQL.
Peter Mortensen