oracle值为null时取默认值,sql – Oracle:当同一查询中更具体的值为null时,如何获取默认值?...

这个头衔很残酷,但我不知道怎么说.

我有一个绑定到user_id的键值表,用于存储整个站点的用户首选项.如果用户没有进入并更新他们的任何设置,那么每当我要求一个密钥时(比如说“FAVORITE_COLOR”它将为null,所以我需要拉出我与默认用户绑定的默认设置, user_id = 0.

我正在考虑UNION的行,将user_id = 0的结果放到查询的底部,但这只会导致重复.我不确定它是否可能,但我还是喜欢能够说出类似的话:

SELECT val FROM k_v WHERE user_id = 123 AND k = 'FAVORITE_COLOR'

UNION IF val IS NULL

SELECT val FROM k_v WHERE user_id = 0 AND k = 'FAVORITE_COLOR';

有什么好办法吗?

编辑:感谢您的所有帮助.如果你的用例只是抓住这个问题的单个值,那么来自dual的NVL正是你想要的,但是如果你打算在同一个查询中返回多个对,那么看一下其他的一些答案,因为他们可能实际上更有意义的实施.

我接下来讨论了ZeissS的建议,因为它很简单,仍然是一个查询,可以使用多个k,v对,并且我没有问题做可能的重复过滤客户端.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值