返回SQL中的默认值
我有一个SQL查询:返回SQL中的默认值,sql,sql-server,Sql,Sql Server,我有一个SQL查询: SELECT ISNULL(VALUE, '-99') FROM PM_VALUE WHERE ELEMENT_NAME = 'LL' 问题是,如果上面的查询找不到元素\u NAME='LL'条件的任何记录,那么它显然不会返回任何内容 如果没有记录,是否有任何方法可以更新它以返回默认值(EX.-99)?我有一个要求,默认情况下我们需要一些值。如果您希望where子句最多有一个匹配项,那么最简单的方法是聚合: SELECT COALESCE(MAX(VALUE), '-
SELECT ISNULL(VALUE, '-99')
FROM PM_VALUE
WHERE ELEMENT_NAME = 'LL'
问题是,如果上面的查询找不到元素\u NAME='LL'
条件的任何记录,那么它显然不会返回任何内容
如果没有记录,是否有任何方法可以更新它以返回默认值
(EX.-99)
?我有一个要求,默认情况下我们需要一些值。如果您希望where
子句最多有一个匹配项,那么最简单的方法是聚合:
SELECT COALESCE(MAX(VALUE), '-99')
FROM PM_VALUE
WHERE ELEMENT_NAME = 'LL';
不带分组依据的聚合查询只返回一行。如果没有任何内容与
WHERE
匹配,则聚合列将为NULL
。COALESCE()
将NULL
转换为默认值。我认为DB2会在这种情况下发出警告。@Hogan。真正地警告是什么?这种行为是基于SQL语言定义的(尽管DB2确实可以追溯到标准出现之前SQL的黑暗时期)。聚合中跳过了NULL值之类的东西——记不清了,但这就是它的要点。完全可以忽略的警告,但如果你像我一样,根本不想要任何警告信息……为什么不尝试只添加一个案例陈述-在内部,这些内置的联合,nvl等使用相同的逻辑