2012-04-25 104 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