Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengapa menggunakan karakter Garis Bawah dalam filter LIKE memberi saya semua hasil?

Ubah WHERE . Anda kondisi seperti ini:

WHERE mycolumn LIKE '%\_%' ESCAPE '\'

Ini adalah salah satu cara Oracle mendukung karakter pelarian. Di sini Anda mendefinisikan karakter escape dengan escape kata kunci. Untuk detailnya, lihat tautan ini di Oracle Docs.

'_' dan '%' adalah karakter pengganti dalam LIKE pernyataan yang dioperasikan dalam SQL.

_ karakter mencari keberadaan (apa saja) satu karakter tunggal. Jika Anda mencari berdasarkan columnName LIKE '_abc' , itu akan memberi Anda hasil dengan baris yang memiliki 'aabc' , 'xabc' , '1abc' , '#abc' tapi BUKAN 'abc' , 'abcc' , 'xabcd' dan seterusnya.

'%' karakter digunakan untuk mencocokkan 0 atau lebih jumlah karakter. Artinya, jika Anda mencari berdasarkan columnName LIKE '%abc' , itu akan memberi Anda hasil dengan memiliki 'abc' , 'aabc' , 'xyzabc' dan seterusnya, tetapi tidak ada 'xyzabcd' , 'xabcdd' dan string lainnya yang tidak diakhiri dengan 'abc' .

Dalam kasus Anda, Anda telah mencari dengan '%_%' . Ini akan memberikan semua baris dengan kolom itu memiliki satu atau lebih karakter, yang berarti karakter apa pun, sebagai nilainya. Inilah mengapa Anda mendapatkan semua baris meskipun tidak ada _ di nilai kolom Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL SQL Dinamis dan Tabel Temp

  2. Cara Membuat Database di SQL Server

  3. Kunci Utama Gabungan vs kolom ID tambahan?

  4. Bagaimana cara mengatur pemeriksaan untuk koneksi di SQL Server?

  5. Memperkenalkan Fitur Baru - Analisis Deadlock