sql - 以前有效的 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 时转换失败。
很明显,转换和替换在这种情况下不起作用,我能做些什么呢?我已经尝试通过转换器进行操作,并且在下载过程中没有任何运气。
解决方案
替换后的字符可能不是空格。您可以像这样检查替换后的数据是否包含空格:
SELECT * FROM (
SELECT ANvarChar, replace(AVarchar,' ', '') as TEST, AnotherVarChar FROM TempImport
) as Conv
WHERE TEST LIKE '% %'
这不应该返回任何行。在这种情况下,应该添加其他空格替换(就像 Zeki Gumus 在评论中建议的那样)。
推荐阅读
- php - 使用没有 GCM 或 FCM 的 PHP 将消息推送到 android
- html - 试图打印一个包含对象数组的对象 Html
- python - PyQt-CheckedListBox?
- mysql - where 子句中的别名
- python - 如何在 python 中正确操作相对 URL?
- python - 在 Python 中使用 Pandas 将 csv 的页脚(最后几行)保存为单独的文件
- android - android:filterTouchesWhenObscured="true" 不适用于暮光之城应用
- youtube-api - 如何通过 API V3 获取播放列表的第一个视频缩略图?
- java - 如何在这个递归代码中逃脱无限循环?
- keycloak - keycloak 中的新主题类型