Java Update()方法不使用';不能使用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

我不知道为什么update()方法不适用于ORACLE数据库

有一行的USERID列的数据为'ABC'(在'C'字符后有一些空格字符)

似乎没有发现那场争吵

然而,如果我将代码改为下面的代码,它就会工作

注意:所有都使用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


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,