SQL:修复 CSV 导入错误

SQL: Fix for CSV import mistake

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

因此,UPC1 列不是包含“958634”,而是包含“958634,95877456”。 “95877456”应该在 UPC2 列中,而不是 UPC2 为 NULL。

有没有办法让我在逗号上拆分并将数据发送到 UPC2,同时保持逗号前的 UPC1 数据完好无损?

谢谢。

您可以使用字符串函数来完成此操作。要查询值并验证逻辑,试试这个:

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 将只是 return 到字符串的末尾。在这里使用 1000 比计算到最后所需的确切字符数要容易得多。