我有一个数据库,其中有多个列填充了各种数字字段。在尝试从CSV填充时,我必须搞定分配分隔字段。最终结果是一个包含It的正确信息的列,但也包含下一列的数据 - 用逗号分隔。
因此,代替包含“958634”的列UPC1,它包含“958634,95877456”。 “95877456”应该在UPC2列中,而UPC2是NULL。
我有没有办法拆分逗号并将数据发送到UPC2,同时保留逗号之前的UPC1数据?
感谢。
答案 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比计算到达目的地所需的确切字符数要容易得多。