sql - 选择字段设置为空或为空的所有记录

标签 sql stored-procedures select

我有一个存储过程,在其中我想选择表 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/

相关文章:

每列的 MySQL COUNT 值

mysql - 选择在数据透视表中不成对出现的记录

mysql - 从数据库显示

javascript - 使用 jquery 选择器将选定的值传递给函数

SQL - 为这个简单查询创建条件 Where 子句

mysql - 我的 SQL 代码有什么问题?最后一行出现错误

sql - 有没有比 SQL 存储过程更好的方法?

c# - Entity Framework - 存储过程的执行时间极长

mysql - 指定 OUTFILE 路径

sql - 用更少的参数编写一个更有针对性的存储过程会更好吗?