相关疑难解决方法(0)

SQLite相当于ISNULL(),NVL(),IFNULL()或COALESCE()

我想避免在我的代码中进行如下的许多检查:

myObj.someStringField = rdr.IsDBNull(someOrdinal) 
                            ? string.Empty 
                            : rdr.GetString(someOrdinal);
Run Code Online (Sandbox Code Playgroud)

我想我可以让我的查询通过执行以下操作来处理空值:

SELECT myField1, [isnull](myField1, '') 
FROM myTable1
WHERE myField1 = someCondition
Run Code Online (Sandbox Code Playgroud)

我虽然使用SQLite,但似乎没有认识到这个isnull功能.我也试过其他数据库中的一些公认的那些等效(NVL(),IFNULL()COALESCE()),但SQLite的似乎不认识任何人.

有没有人有任何建议或知道更好的方法来做到这一点.不幸的是,数据库没有所有字段的默认值.另外,LEFT JOIN在某些情况下我需要使用一些子句,其中返回的某些字段将为null,因为LEFT JOIN表中的匹配记录将不存在.

.net sqlite dbnull

85
推荐指数
5
解决办法
15万
查看次数

SQLite - WHERE子句中IS和=(等于)之间的差异.(使用JDBC PreparedStatement)

编辑:与a_horse_with_no_name交谈我发现SQL中的"IS"略有不同,允许使用"IS" 在NULL 值之间进行比较:stackoverflow.com/a/9102445/1470058.这给我带来了很多困惑.谢谢:

除非一个或两个操作数都为NULL,否则IS和IS NOT运算符的工作方式类似于=和!=.在这种情况下,如果两个操作数均为NULL,则IS运算符求值为1(true),IS NOT运算符求值为0(false).如果一个操作数为NULL而另一个操作数不为NULL,则IS运算符的计算结果为0(false),IS NOT运算符为1(true).IS或IS NOT表达式无法计算为NULL.运算符IS和IS的优先级与=不同.


我对SQLite中的关键字"IS"感到困惑.

我正在开发一个项目,要求我使用Java准备好的语句.我遇到过两种类型的WHERE子句:

SELECT * FROM table WHERE column = ?
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM table WHERE column IS NULL
Run Code Online (Sandbox Code Playgroud)

我的问题是等号"="或"是"这个词之间存在差异吗?谷歌搜索显示,大多数人使用=进行价值比较,使用IS进行比较.但是我尝试了一些自己的SQLite查询.

  • "IS"将返回" 列IS NULL "和" 列IS值 "的预期结果.
  • "="将返回" column = value "的预期结果,但不会返回 " column = NULL "的结果.

我的问题是我可以在两种情况下都使用"IS"而没有出现意外结果吗?我想为一个查询做一个准备好的语句,该查询对列的约束可能是也可能不为null.我希望我一直有道理.

为了简化我所说的一切,我可以使用以下Java代码而不会因使用"IS"而产生意外影响:

private static final String queryProjectSql = "SELECT * FROM fields WHERE project IS ?";
// later in a method
sqlStatement = connection.prepareStatement(queryProjectSql);
sqlStatement.setString(1, project); //Project may be a String or …
Run Code Online (Sandbox Code Playgroud)

java sqlite comparison equals where

1
推荐指数
1
解决办法
4007
查看次数

标签 统计

sqlite ×2

.net ×1

comparison ×1

dbnull ×1

equals ×1

java ×1

where ×1