2015-12-22 53 views
1

我有一個表的客戶提供以下記錄在該領域有「_」:如何選擇記錄使用SQL

CustomerID CustomerName Country 
1   Alfr_eds  Germany 
2   Ana    Mexico 
3   Antonio   Mexico 

,我需要選擇在客戶名稱含_記錄,所以什麼都可以查詢用過的。

我想下面的查詢:

SELECT * FROM Customers where CustomerName LIKE '%_%'; 

但它返回的所有數據。

+0

好嗎?你有什麼問題? –

+5

請參閱http://stackoverflow.com/questions/19588455/use-underscore-character-in-wild-card-charecter-of-like-query-gives-me-all-table –

+0

下劃線是「 LIKE'查詢一個任意字符。 因此LIKE'%_%'的意思是「給我所有記錄至少有一個任意字符在這一列」。 – Marshal

回答

0

對於SQL Server,您可以使用[ ]作爲wildacard字符,請檢查LIKE (Transact-SQL)文檔。

enter image description here

所以,你可以寫這樣的:

select * from customers where customerName like '%[_]%' 

您的查詢使用_通配符,因此,它基本上會檢查是否customerName中有任何單個字符。

+1

有人與您的代表應該知道比發佈代碼專用答案更好。嘖嘖嘖嘖嘖:) –

+0

只是好奇,爲什麼我們必須包括框括號? – Marshal

+1

解決這個:)感謝提供 –

3

爲「Disable」下劃線作爲通配符,你需要逃避它:

SELECT * 
FROM Customers 
where CustomerName LIKE '%\_%' escape '\'; 

該條款escape '\'告訴一個\之後的任何字符不應該被視爲一個通配符數據庫。你可以使用任何你喜歡的角色,例如#也能正常工作

SELECT * 
FROM Customers 
where CustomerName LIKE '%#_%' escape '#'; 
+0

非常感謝你! – Guri