sta*_*ack 2 php mysql sql null
CASE WHEN我的查询中有一个函数.像这样的东西:
CASE WHEN h.user_id = :user_id THEN '1'
ELSE '0'
END paid
Run Code Online (Sandbox Code Playgroud)
我这样经过:user_id:
$sth->bindValue(":user_id", $user_id, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)
好吧,有时候$user_id是NULL.我已经听说NULL在查询中某些内容相同时会发生一些不好的事情.现在,我想知道,会发生什么情况$user_id是NULL?
我测试了它,但一切都很好,我没有看到任何问题.如果$user_id是NULL,$result['paid']是1或CASE..WHEN断裂?
编辑:
我想做的就是h.user_id = :user_id那时候paid = 1.但有时候:user_id是null.我该怎么逃避null?
你遇到的问题是因为,根据标准,比较任何东西null给出的结果null,最终被强迫false.因此,你的表情,就写,总是返回0时,无论是:user_id或h.user_id为null.
幸运的是,这种情况经常出现,MySQL提供了一些语法糖,称为"太空飞船"或" NULL-safe equal"运算符,看起来像<=>.它的使用方式与普通=算子完全相同,只是在比较a 和非n时,以及在比较两者时返回false(不null).nullnulltruenull
然后表达成为
CASE WHEN h.user_id <=> :user_id THEN '1'
ELSE '0'
END paid
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |