【发布时间】:2013-01-15 03:48:27
【问题描述】:
我不知道为什么 update() 方法不适用于 ORACLE 数据库
deleteQuery = "delete from USBRPF where upper(userid) = upper(?)" ; String s= "ABC " ; getJdbcTemplate().update(deleteQuery, s.trim());
有一行 USERID 列的数据为“ABC”(“C”字符后有一些空格字符)
似乎没有找到那行。
但是,如果我将代码更改为下面,它可以工作
deleteQuery = "delete from USBRPF where upper(userid) like upper(?)" ; String s= "ABC " ; getJdbcTemplate().update(deleteQuery, s.trim() + "%");
或
deleteQuery = "delete from USBRPF where upper(trim(userid)) = upper(?)" ; String s= "ABC " ; getJdbcTemplate().update(deleteQuery, s.trim());
注意:所有都适用于 MSSQL 数据库,数据从 ORACLE 迁移。 估计是数据库设置有问题。有没有人能弄清楚?谢谢
修改:
栏目信息:
甲骨文
BRANCH CHAR(2 CHAR)
COMPANY CHAR(1 CHAR)
DATIME TIMESTAMP(6)
JOBNM CHAR(10 CHAR)
UNIQUE_NUMBER NUMBER(18,0)
USERID CHAR(10 CHAR)
USRPRF CHAR(10 CHAR)
MSSQL
[UNIQUE_NUMBER] [bigint] IDENTITY(1,1) NOT NULL,
[USERID] [nchar](10) NULL,
[COMPANY] [nchar](1) NULL,
[BRANCH] [nchar](2) NULL,
[USRPRF] [nchar](10) NULL,
[JOBNM] [nchar](10) NULL,
[DATIME] [datetime2](6)> NULL,
【问题讨论】:
-
我从未使用过 Oracle,但您可能需要在列中包含 Oracle 和 SQL/Server 使用的确切数据类型才能获得答案。就我个人而言,当您修剪搜索字符串但它在数据中时,我也不希望它在 SQL/Server 中工作,但是再次不要使用 JDBC。
-
@PeterJ:我添加了 Oracle 和 SQL/Server 使用的数据类型
-
不起作用究竟是什么意思?你有错误吗?什么都没有删除?是否删除了太多行?顺便说一句:由于应用了自动填充,使用
CHAR是一个糟糕的选择。我很确定您实际上想要VARCHAR(对于两个DBMS)。
标签: java spring sql-server-2008 oracle10g jdbctemplate