SQL Server Melepaskan Garis Bawah


339

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:


525

Referensi T-SQL untuk LIKE :

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'

Oh man! ... jika masih tidak berfungsi, pastikan Anda memiliki kolom yang benar.
Jens Frandsen

198

Jelas solusi @Lasse benar, tetapi ada cara lain untuk memecahkan masalah Anda: operator T-SQL LIKEmendefinisikan 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 '^';

43
Untuk melengkapi gambar: ESCAPEklausa adalah bagian dari standar SQL dan akan bekerja pada DBMS apa pun, bukan hanya SQL Server.
a_horse_with_no_name

2

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


0

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.