Bagaimana cara saya keluar dari karakter garis bawah?
Saya menulis sesuatu seperti klausa tempat berikut dan ingin dapat menemukan entri aktual dengan _d di akhir.
Where Username Like '%_d'
Bagaimana cara saya keluar dari karakter garis bawah?
Saya menulis sesuatu seperti klausa tempat berikut dan ingin dapat menemukan entri aktual dengan _d di akhir.
Where Username Like '%_d'
Jawaban:
Anda dapat menggunakan karakter yang cocok dengan wildcard sebagai karakter literal. Untuk menggunakan karakter wildcard sebagai karakter literal, lampirkan karakter wildcard dalam tanda kurung. Tabel berikut menunjukkan beberapa contoh penggunaan kata kunci LIKE dan karakter wildcard [].
Untuk kasus Anda:
... LIKE '%[_]d'
Jelas solusi @Lasse benar, tetapi ada cara lain untuk memecahkan masalah Anda: operator T-SQL LIKE
mendefinisikan ESCAPE opsional klausa , yang memungkinkan Anda mendeklarasikan karakter yang akan keluar dari karakter berikutnya ke dalam pola.
Untuk kasus Anda, klausa WHERE berikut ini setara:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
ESCAPE
klausa adalah bagian dari standar SQL dan akan bekerja pada DBMS apa pun, bukan hanya SQL Server.
Solusi ini sangat masuk akal. Sayangnya, tidak ada yang bekerja untuk saya seperti yang diharapkan. Alih-alih mencoba repot dengan itu, saya pergi dengan bekerja di sekitar:
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
Ini bekerja untuk saya, gunakan saja pelariannya
'%\_%'
Tak satu pun dari ini bekerja untuk saya di SSIS v18.0, jadi saya akan melakukan sesuatu seperti ini: ... Di
WHERE CHARINDEX('_', thingyoursearching) < 1
mana saya mencoba untuk mengabaikan string dengan garis bawah di dalamnya. Jika Anda ingin menemukan hal-hal yang memiliki garis bawah, balik saja:
WHERE CHARINDEX('_', thingyoursearching) > 0