java - "IS NOT"Java/SQLite 应用程序中的语法错误

标签 java sqlite sqlexception

我正在开发一个带有 SQLite 数据库的 Java 应用程序。我必须执行这个查询:

select * from service 
where (tache IS NOT 'I') 
AND (idequiv IS null OR idequiv = '' OR idequiv<=0) 
union 
select * from service where (idequiv IS NOT null) 
and (tache IS NOT 'I') 
group by num_service 
order by num_service;

这在 SQLiteStudio 中运行良好,但在我的应用程序中我遇到了这个异常:

 java.sql.SQLException: near "'I'": syntax error    at
 org.sqlite.DB.throwex(DB.java:288)     at
 org.sqlite.NativeDB.prepare(Native Method)     at
 org.sqlite.DB.prepare(DB.java:114)     at
 org.sqlite.PrepStmt.<init>(PrepStmt.java:37)   at
 org.sqlite.Conn.prepareStatement(Conn.java:231)    at
 org.sqlite.Conn.prepareStatement(Conn.java:224)    at
 org.sqlite.Conn.prepareStatement(Conn.java:213)

知道为什么吗? 我很绝望..

最佳答案

IS NOTIS用于 NULL 值。使用<>NOT a = b对于值(value)观。

SELECT * FROM service 
WHERE (NOT tache = 'I') 
AND (idequiv IS null OR idequiv = '' OR idequiv<=0) 
UNION
SELECT * FROM service 
WHERE (idequiv IS NOT null) 
AND (NOT tache = 'I') 
GROUP BY num_service 
ORDER BY num_service;

关于java - "IS NOT"Java/SQLite 应用程序中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6826546/

相关文章:

java - 根据Java应用程序,SQLite数据库不存在

java.sql.SQLException : No value specified for parameter 2 异常

java.sql.SQLException : Invalid operation: wasNull() called with no data retrieved . 但我 'am' 检查它是否为空

java - 有错误() : how to ignoring validation of specific input

java - 在 TextView 中将 ' 替换为撇号 (')

java - 改进操作顺序并测试值是否有小数

python - 使用 python 和 sqlite3 插入的性能

java - XSSF。空指针异常

python - 创建索引时数据库文件大小 > 2GB 的 sqlite 内存使用问题

android - 如何忽略 SQLite 查询中的重音(Android)