Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо използването на знак за долна черта във филтър LIKE ми дава всички резултати?

Променете вашия WHERE състояние като това:

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

Това е един от начините, по които Oracle поддържа escape символи. Тук дефинирате escape символа с escape ключова дума. За подробности вижте тази връзка в Oracle Docs.

'_' и '%' са заместващи знаци в LIKE опериран оператор в SQL.

_ символ търси присъствие на (който и да е) един единствен знак. Ако търсите по columnName LIKE '_abc' , ще ви даде резултат с редове с 'aabc' , 'xabc' , '1abc' , '#abc' но НЕ 'abc' , 'abcc' , 'xabcd' и така нататък.

'%' символът се използва за съвпадение на 0 или повече броя знаци. Това означава, че ако търсите по columnName LIKE '%abc' , ще ви даде резултат с 'abc' , 'aabc' , 'xyzabc' и така нататък, но без 'xyzabcd' , 'xabcdd' и всеки друг низ, който не завършва с 'abc' .

Във вашия случай сте търсили по '%_%' . Това ще даде на всички редове с тази колона един или повече знака, което означава всякакви знаци, като стойност. Ето защо получавате всички редове, въпреки че няма _ в стойностите на колоната си.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CodeIgniter MSSQL връзка

  2. Разлика между sys.views, sys.system_views и sys.all_views в SQL Server

  3. Transactionscope хвърля изключение, тази платформа не поддържа разпределени транзакции при отваряне на обект за връзка

  4. Различни начини за сравняване на схема и данни на таблици на SQL Server

  5. Инсталирайте SQL Server 2019 на Mac