首页 > 解决方案 > 以前有效的 SQL 查询不再有效

问题描述

我每天提供的一个 excel 文件在一个应该是整数的数字中包含一个空格。当我通过查询中的替换和转换简单地替换它时,这很容易解决。但是,现在我从 .NET Core 切换到 NodeJS,当我尝试使用相同的查询时,它并没有按预期进行。这是我正在使用的查询。

"INSERT INTO table SELECT ANvarChar, CONVERT(INT, replace(AVarchar,' ', '')), AnotherVarCharFROM TempImport"

当我通过 C# 运行它时,以内部 SQL Server 数据库为目标工作,但现在我在 Linux 上做同样的事情,使用 mssql 服务器。

"BULK INSERT TempImport FROM '" + csvFilePath + "' WITH (FIELDTERMINATOR = '||', ROWTERMINATOR = '\n');"

它抛出错误:

RequestError:将 varchar 值“AVarchar”转换为数据类型 int 时转换失败。

很明显,转换和替换在这种情况下不起作用,我能做些什么呢?我已经尝试通过转换器进行操作,并且在下载过程中没有任何运气。

标签: sqlsql-server

解决方案


替换后的字符可能不是空格。您可以像这样检查替换后的数据是否包含空格:

SELECT * FROM (
SELECT ANvarChar, replace(AVarchar,' ', '') as TEST, AnotherVarChar FROM TempImport
) as Conv
WHERE TEST LIKE '% %'

这不应该返回任何行。在这种情况下,应该添加其他空格替换(就像 Zeki Gumus 在评论中建议的那样)。


推荐阅读