2012-04-25 184 views
0

我試圖用applicant_id等於「Staff01」選擇一個數據,我用這個條件:MySQL的LIKE語句錯誤

WHERE 
IF (c.use_id_as_emp_no = '0', ccal.applicant_id, cc.contractor_idPK) LIKE '%staff01%' 

會發生什麼事是,當我執行查詢,有沒有結果。但是,如果我刪除LIKE語句(即s)中字符串的第一個字母,則會顯示結果。

另一件事是,當我取消了上述條件的IF語句,這將是這樣的:

WHERE 
ccal.applicant_id LIKE '%staff01%' 

數據與applicant_id Staff01所示。

它是導致LIKE函數故障的IF語句嗎?請幫幫我。我在這方面很難。非常感謝。

編輯:解決在使用比較

WHERE 
IF (c.use_id_as_emp_no = '0', LCASE(ccal.applicant_id), cc.contractor_idPK) LIKE LCASE('%staff01%') 
+1

嘗試檢查區分大小寫。 – 2012-04-25 09:39:34

+0

您是否嘗試過沒有IF語句?只有兩個由OR隔開的WHERE子句? – 2012-04-25 09:43:53

+0

@tsabz我試過,它的工作原理。但我需要If語句,因爲如果use_id_as_emp_no不是0,則必須檢查contractor_idPK而不是applicant_id – 2012-04-25 09:52:03

回答

0

LCASE()嘗試

where IF (c.use_id_as_emp_no = '0', ccal.applicant_id, cc.contractor_idPK) 
COLLATE latin1_general_ci LIKE '%staff01%' 
+0

這不起作用。它對二進制字符集無效。 – 2012-04-25 09:45:56

+0

然後嘗試'COLLATE latin1_bin'而不是'latin1_general_ci' – 2012-04-25 09:46:49

+0

它也不能正常工作。 COLLATION'latin1_bin'對於CHARACTER SET'binary'無效 – 2012-04-25 09:48:21