类MySQL语句错误

类MySQL语句错误,mysql,sql-like,Mysql,Sql Like,我正在尝试选择一个申请人id等于“Staff01”的数据,并且我正在使用以下条件: 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 '%st

我正在尝试选择一个申请人id等于“Staff01”的数据,并且我正在使用以下条件:

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%'
显示了申请人id为Staff01的数据

是IF语句导致类似功能出现故障吗?请帮帮我。我在这件事上很难受。非常感谢

编辑:在比较中使用LCASE()解决

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


尝试检查是否区分大小写。您是否尝试过不使用IF语句?只要两个WHERE子句之间用OR?@tsabz隔开,我就试过了,效果很好。但我需要If语句,因为如果use_id_as_emp_no不是0,则必须检查承包商而不是申请人的idPK。鉴于您的最新评论,我怀疑您希望在二进制排序中将
员工
员工
匹配。如果是这样的话,你就省略了相关数据。多亏了你的帮助。我已经解决了这个问题,我将LCASE()函数添加到所选字段中,并在LIKE语句中:(c.use_id_as_emp_no='0',LCASE(ccal.applicator_id),cc.contractor_idPK)与LCASE('%staff01%')类似,然后尝试使用
COLLATE latin1\u bin
而不是
latin1\u general\u ci
它也不起作用。排序规则“latin1_-bin”对字符集“binary”无效我尝试将排序规则latin1_-bin放在LIKE语句之后,它说它对字符集utf8无效。
where IF (c.use_id_as_emp_no = '0', ccal.applicant_id, cc.contractor_idPK) 
COLLATE latin1_general_ci LIKE '%staff01%'