gpt4 book ai didi

java - Update() 方法不适用于 ORACLE 数据库

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:50 26 4
gpt4 key购买 nike

我不知道为什么 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,

最佳答案

CHAR 是固定长度类型。因此,即使您的数据在数据库中看起来像“ABC”,它也会存储为“ABC”。 CHAR 列将为 padded with spaces up their size .

因此,在第一个示例中,您将“ABC ”(存储在数据库中)与“ABC”(在trim()调用后从Java传递)进行比较。在您的第二个和第三个示例中,您正在解决这个问题。

我建议您使用 VARCHAR2,因为它更自然且更常用。如果不可能,您可以尝试将从 Java 传递的值填充到 Oracle 中定义的 CHAR 大小。

关于java - Update() 方法不适用于 ORACLE 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com