Java Update()方法不使用';不能使用ORACLE数据库
我不知道为什么update()方法不适用于ORACLE数据库 有一行的USERID列的数据为'ABC'(在'C'字符后有一些空格字符) 似乎没有发现那场争吵 然而,如果我将代码改为下面的代码,它就会工作 或 注意:所有都使用MSSQL数据库,数据从ORACLE迁移。 我想数据库设置有问题。有人能帮我弄明白吗?谢谢 修改: 列信息: 神谕Java Update()方法不使用';不能使用ORACLE数据库,java,spring,sql-server-2008,oracle10g,jdbctemplate,Java,Spring,Sql Server 2008,Oracle10g,Jdbctemplate,我不知道为什么update()方法不适用于ORACLE数据库 有一行的USERID列的数据为'ABC'(在'C'字符后有一些空格字符) 似乎没有发现那场争吵 然而,如果我将代码改为下面的代码,它就会工作 或 注意:所有都使用MSSQL数据库,数据从ORACLE迁移。 我想数据库设置有问题。有人能帮我弄明白吗?谢谢 修改: 列信息: 神谕 BRANCH CHAR(2 CHAR) COMPANY CHAR(1 CHAR) DATIME
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
CHAR是一种固定长度的类型。因此,即使您的数据在数据库中看起来像“ABC”,它也存储为“ABC”。字符列将被删除 因此,在第一个示例中,您将“ABC”(存储在数据库中)与“ABC”(在trim()调用后从Java传递)进行比较。在你的第二个和第三个例子中,你正在解决这个问题
我建议您使用VARCHAR2,因为它更自然、更常用。如果不可能,您可以尝试将从Java传递的值填充到Oracle中定义的字符大小。CHAR是一种固定长度类型。因此,即使您的数据在数据库中看起来像“ABC”,它也存储为“ABC”。字符列将被删除 因此,在第一个示例中,您将“ABC”(存储在数据库中)与“ABC”(在trim()调用后从Java传递)进行比较。在你的第二个和第三个例子中,你正在解决这个问题
我建议您使用VARCHAR2,因为它更自然、更常用。如果不可能,您可以尝试将从Java传递的值填充到Oracle中定义的字符大小。我从未使用过Oracle,但您可能需要包含Oracle和SQL/Server为该列使用的确切数据类型才能得到答案。就我个人而言,当您修剪搜索字符串时,我也不希望它在SQL/Server中工作,但它在数据中,但再次不要使用JDBC。@PeterJ:我添加了Oracle和SQL/Server使用的数据类型。不工作到底意味着什么?你有错误吗?没有删除任何内容吗?是否删除了太多行?顺便说一句:由于应用了自动填充,使用
CHAR
是一个错误的选择。我很确定您实际上想要VARCHAR
(对于这两个DBMS)。我从未使用过Oracle,但您可能需要包含Oracle和SQL/Server使用的确切数据类型,以便获得答案。就我个人而言,当您修剪搜索字符串时,我也不希望它在SQL/Server中工作,但它在数据中,但再次不要使用JDBC。@PeterJ:我添加了Oracle和SQL/Server使用的数据类型。不工作到底意味着什么?你有错误吗?没有删除任何内容吗?是否删除了太多行?顺便说一句:由于应用了自动填充,使用CHAR
是一个错误的选择。我很确定您实际上想要VARCHAR
(对于两个DBMS)。
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());
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)
[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,