SQL:修复CSV导入错误

时间:2015-10-30 20:01:41

标签: sql-server csv ssms

我有一个数据库,其中有多个列填充了各种数字字段。在尝试从CSV填充时,我必须搞定分配分隔字段。最终结果是一个包含It的正确信息的列,但也包含下一列的数据 - 用逗号分隔。

因此,代替包含“958634”的列UPC1,它包含“958634,95877456”。 “95877456”应该在UPC2列中,而UPC2是NULL。

我有没有办法拆分逗号并将数据发送到UPC2,同时保留逗号之前的UPC1数据?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用字符串函数执行此操作。要查询值并验证逻辑,请尝试以下操作:

SELECT
  LEFT(UPC1, CHARINDEX(',', UPC1) - 1),
  SUBSTRING(UPC1, CHARINDEX(',', UPC1) + 1, 1000)
FROM myTable;

如果结果符合您的要求,请将其转换为更新:

UPDATE myTable SET
  UPC1 = LEFT(UPC1, CHARINDEX(',', UPC1) - 1),
  UPC2 = SUBSTRING(UPC1, CHARINDEX(',', UPC1) + 1, 1000);

UPC1的表达式将UPC1的左侧最多逗号前的一个字符。

UPC2的表达式使用逗号后面一个字符的UPC1字符串的剩余部分。

SUBSTRING的第三个参数需要一些解释。它是你想要在字符串的起始位置之后包含的字符数(在这种情况下是逗号位置之后的一个字符)。如果指定的值比字符串SUBSTRING长,则只返回字符串的末尾。在这里使用1000比计算到达目的地所需的确切字符数要容易得多。

相关问题