SQL query error: Conversion failed when converting the varchar value
SQL query error: Conversion failed when converting the varchar value
我搜索了错误,但只找到了不适合我的不同答案。
我有这个查询,在 SQL 服务器:
DECLARE @column_name varchar (25),
@data_column int,
@table_name varchar (25)
DECLARE @mySql nvarchar (MAX)
SET NOCOUNT ON;
SET @column_name = 'Excellent'
SET @table_name = 'CSAT'
SET @data_column = 10
SET @mySql = 'INSERT INTO '+@table_name+'('+@column_name+') VALUES('+@data_column+')'
EXEC (@mySql)
当我执行它时,它显示了这个错误:
Conversion failed when converting the varchar value 'INSERT INTO CSAT(Excellent) VALUES(' to data type int.
所有列都是 Int 并允许空值。
我必须进行转换还是什么?感谢您的帮助!
@data_column是一个int,所以你需要将它转换为varchar,因为你正在构建一个字符串。
SET @mySql = 'INSERT INTO '+@table_name+'('+@column_name+')
VALUES('+ Convert(Varchar(10), @data_column)+')'
当 sql 服务器遇到混合字符串和 int 的表达式时,它会尝试将字符串转换为 int(而不是相反)。这记录在这里:SQL Server Data Type Precedence
像这样添加一些space
SET @mySql = 'INSERT INTO '+@table_name+' ('+convert(varchar(50),@column_name)+') VALUES('+@data_column+')'
sql 正在尝试在线对您的字符串求和:
SET @mySql = 'INSERT INTO '+@table_name+'('+@column_name+') VALUES('+@data_column+')'
将 @data_column 参数从 int 更改为 varchar 或使用 CONCAT 函数创建您的 SQL 命令:
SET @mySql = CONCAT('INSERT INTO ',@table_name,' (',@column_name,') VALUES(',@data_column,')')
您应该使用参数化查询来执行此操作,还应为对象名称使用适当的数据类型...
像这样....
SET NOCOUNT ON;
DECLARE @column_name SYSNAME
,@data_column INT
,@table_name SYSNAME
,@mySql NVARCHAR(MAX);
SET @column_name = 'Excellent'
SET @table_name = 'CSAT'
SET @data_column = 10
SET @mySql = N' INSERT INTO '+ QUOTENAME(@table_name)
+ N' ('+ QUOTENAME(@column_name) +') '
+ N' VALUES( @data_column )'
Exec sp_executesql @mySql
,N'@data_column INT'
,@data_column
我搜索了错误,但只找到了不适合我的不同答案。
我有这个查询,在 SQL 服务器:
DECLARE @column_name varchar (25),
@data_column int,
@table_name varchar (25)
DECLARE @mySql nvarchar (MAX)
SET NOCOUNT ON;
SET @column_name = 'Excellent'
SET @table_name = 'CSAT'
SET @data_column = 10
SET @mySql = 'INSERT INTO '+@table_name+'('+@column_name+') VALUES('+@data_column+')'
EXEC (@mySql)
当我执行它时,它显示了这个错误:
Conversion failed when converting the varchar value 'INSERT INTO CSAT(Excellent) VALUES(' to data type int.
所有列都是 Int 并允许空值。
我必须进行转换还是什么?感谢您的帮助!
@data_column是一个int,所以你需要将它转换为varchar,因为你正在构建一个字符串。
SET @mySql = 'INSERT INTO '+@table_name+'('+@column_name+')
VALUES('+ Convert(Varchar(10), @data_column)+')'
当 sql 服务器遇到混合字符串和 int 的表达式时,它会尝试将字符串转换为 int(而不是相反)。这记录在这里:SQL Server Data Type Precedence
像这样添加一些space
SET @mySql = 'INSERT INTO '+@table_name+' ('+convert(varchar(50),@column_name)+') VALUES('+@data_column+')'
sql 正在尝试在线对您的字符串求和:
SET @mySql = 'INSERT INTO '+@table_name+'('+@column_name+') VALUES('+@data_column+')'
将 @data_column 参数从 int 更改为 varchar 或使用 CONCAT 函数创建您的 SQL 命令:
SET @mySql = CONCAT('INSERT INTO ',@table_name,' (',@column_name,') VALUES(',@data_column,')')
您应该使用参数化查询来执行此操作,还应为对象名称使用适当的数据类型...
像这样....
SET NOCOUNT ON;
DECLARE @column_name SYSNAME
,@data_column INT
,@table_name SYSNAME
,@mySql NVARCHAR(MAX);
SET @column_name = 'Excellent'
SET @table_name = 'CSAT'
SET @data_column = 10
SET @mySql = N' INSERT INTO '+ QUOTENAME(@table_name)
+ N' ('+ QUOTENAME(@column_name) +') '
+ N' VALUES( @data_column )'
Exec sp_executesql @mySql
,N'@data_column INT'
,@data_column