gpt4 book ai didi

java - 在select sql语句中将参数设置为null

转载 作者:行者123 更新时间:2023-12-02 01:49:42 24 4
gpt4 key购买 nike

我需要帮助,因为我正在努力将 null 作为参数分配给我的 java 程序中的 select 语句。

我的脚本从 csv 文件中读取值,然后根据提供的索引选择参数。但是,这些值有时是空字符串,例如(1,,3) 因此,从索引 1 开始,它将选择空字符串并尝试将其设置为 sql 语句中的参数,这并没有达到我正在寻找的结果。

众所周知,sql 使用以下语法处理 select 语句中的空值:例如select * from tablename where a IS NULL.

在以下情况下将值设置为 null 的最佳方式是什么:

select * from tableName where abc=? 
stmt2.setString(1, csvVal.get(index));

最佳答案

您必须使用单独的 PreparedStatement#setNull 方法将参数值设置为 NULL

if(csvVal.get(index) == null){
stmt2.setNull(1, java.sql.Types.NVARCHAR ); // Or whatever data type your column is
}else{
stmt2.setString(1, csvVal.get(index));
}

编辑:我原来的答案不完整。您还必须修改查询,因为 NULL = NULL 将始终返回 false。

--use a variable to avoid multiple stmt2.set... calls
DECLARE @nullCheck NVARCHAR(MAX) = ? -- Or whatever data type your column is
SELECT *
FROM tableName
WHERE abc = @nullCheck -- if you don't want the null values
OR (abc IS NULL -- only get the records if both the column and the parameter are NULL
AND
@nullCheck IS NULL)

关于java - 在select sql语句中将参数设置为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53163863/

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