我在这里遇到了MySQL的问题,实际上很奇怪......这是一个真正的开端,我一直在尝试很多东西,坚持一些COLLATE,CAST,CONVERT,......但没什么,也许我我没有做正确的方式,但我真的迷失了。
如果有专业人士提示;)这是我的问题:
SELECT col FROM tabl LIMIT 0,1
返回:helloworld01
CASE WHEN((SELECT col FROM tabl LIMIT 0,1) = 'helloworld_01') THEN 'ok' ELSE 'ko' END
返回:确定
CASE WHEN(SUBSTR('helloworld_01',1,1) = 'h') THEN 'ok' ELSE 'ko' END
返回:确定
但这就是它变得奇怪的地方
CASE WHEN(SUBSTR((SELECT col FROM tabl LIMIT 0,1),1,1) = 'h')
THEN 'ok' ELSE 'ko' END
返回:ko
手动检查每个字母后,我发现结果很奇怪......数字和字母的顺序正确,但每个字符都不应该是......我得到的东西就像lsuejwodhb_65 ....但是不要在每次请求时改变......而且他们也没有匹配他们的CHAR代码......
答案 0 :(得分:1)
那是因为在你的下面的查询中,并不总是保证输出helloworld_01
,除非你只有一行非常罕见;因为你没有使用任何order by
条款。因此返回的数据可能不同,因此您的条件根本不匹配。确保使用order by子句。再一次,没有使用order by
LIMIT
条款是没有意义的。
SELECT col FROM tabl order by col LIMIT 0,1
尝试下面的奇怪查询,看看它是否与此次匹配
CASE WHEN(SUBSTR((SELECT col FROM tabl order by col LIMIT 0,1),1,1) = 'h')
THEN 'ok' ELSE 'ko' END