我有一个存储过程,在其中我想选择表 T 中 user_id 字段等于参数 p_user_id 的所有记录:
SELECT * FROM T WHERE user_id = p_user_id;
但如果参数为 NULL(或者如果您愿意则为零),我想要所有记录。 也就是说,我想不出WHERE子句中的CASE。
最佳答案
SELECT * FROM T
WHERE user_id = p_user_id
OR p_user_id is null
OR p_user_id = 0
应该可以。
如果 p_user_id 为 null,则子句 user_id = p_user_id
将等于 UNKNOWN,这在大多数数据库中将产生不匹配任何行的结果( sybase 是异常(exception))。
关于sql - 选择字段设置为空或为空的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5230023/