【发布时间】:2012-01-19 07:24:13
【问题描述】:
我写了一个 SQL
SELECT ID
FROM NDA.K_FAKTURIER_KDF
WHERE FAKTURIER_KDF_KZ = ?
AND NVL(MANDANT, ' ') = (CASE ?
WHEN '01180311' THEN
'BUTLERS'
ELSE
' '
END)
在我的程序中运行时出现错误
java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
在调试的时候我发现Java编译器执行查询像
SELECT ID
FROM NDA.K_FAKTURIER_KDF
WHERE FAKTURIER_KDF_KZ = ?
AND NVL(MANDANT, ' ') = (CASE ?
WHEN 01180311 THEN
'BUTLERS'
ELSE
' '
END)`
所以 Java 编译器转义了单个代码,所以任何人都可以告诉我它将如何正常运行?
【问题讨论】:
-
你试过转义角色吗?当\'01180311\'然后
-
请发布代码(至少相关部分)..
-
MANDANT 是字符字段还是数字字段?
标签: java sql compilation escaping