gpt4 book ai didi

sql - 将 nvarchar 值转换为数据类型 int 时转换失败

转载 作者:行者123 更新时间:2023-12-02 23:38:31 25 4
gpt4 key购买 nike

你知道这里可能出了什么问题吗?

所有变量均为 nvarchar。当 @FunctionValue 包含字符串格式的 INT 时,会发生错误。

IF @TargetType = 'INT'
BEGIN
SELECT @SQLSTR = 'UPDATE ' + @TargetTable +
' SET ' + @TargetColumn + ' = ' + COALESCE(CAST(@FunctionValue AS INT), CAST(@Value AS INT)) +
' '
END

最佳答案

问题在于 + 运算符的歧义。当任何参数为数字时,它假定您正在执行数字加法,而不是字符串连接。

如果您的原始数据是字符,那么您可以通过完全删除强制转换来修复它:

IF @TargetType = 'INT'
BEGIN
SELECT @SQLSTR = 'UPDATE ' + @TargetTable +
' SET ' + @TargetColumn + ' = ' + COALESCE(@FunctionValue, @Value) +
' '
END;

如果您的原始数据是数字,那么您需要将它们显式转换为字符:

IF @TargetType = 'INT'
BEGIN
SELECT @SQLSTR = 'UPDATE ' + @TargetTable +
' SET ' + @TargetColumn + ' = ' + cast(cast(COALESCE(@FunctionValue, @Value) as int) as varchar(255)) +
' '
END;

我还将“cast to int”移到了coalesce()之外。

关于sql - 将 nvarchar 值转换为数据类型 int 时转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16541239/

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