在Sybase和MSSqlServer TransactSQL中,我们有一个函数IsNull(columnName,valueForNull),当列值为null时返回一个类型化的默认值。如何在SQLite中复制此功能?
TransactSQL中的示例:
select IsNull(MyColumn,-1) as MyColumn from MyTable
如果MyColumn为null,则此表达式将返回-1作为MyColumn的值。想在SQLite中做类似的事情。
(是的,我知道我可以编写自己的包装函数来处理这个 - 这不是我正在寻找的答案)
TIA
答案 0 :(得分:7)
您应该使用标准COALESCE function:
select coalesce(MyColumn, -1) as MyColumn from MyTable
任何理解标准ANSI SQL的数据库都支持COALESCE,因此使用它是一个很好的习惯。
答案 1 :(得分:6)
您可以使用ifnull:
select ifnull(MyColumn,-1) as MyColumn from MyTable
答案 2 :(得分:3)
执行此操作的SQL标准方法是使用CASE:
SELECT CASE WHEN MyColumn IS NULL THEN -1 ELSE MyColumn END FROM MyTable
比发动机专用的IFNULL,ISNULL,NZ功能更加冗长,但更便携。
(或者,正如mu指出的那样,你可以使用更好的COALESCE)。
答案 3 :(得分:2)
SQLite具有IFNULL()内置函数,可以执行我认为您在此处尝试的内容。