[英]T-SQL function to split string with two delimiters as column separators into table
[英]Using delimiters to split column in T-SQL while skipping delimiters
好的,问题标题含糊,但这就是问题所在。 我在名为Files的表的第一列中有一个文件名列表,我要从中分析这些文件,并用下划线分隔,但是有时我想跳过下划线。 每个文件名的格式为:
distance1000_7_13_2010_1_13PM_AveryDennisonAD_2300008_10S_Lock.csv
因此,为了获取日期和时间,我想将此列拆分为以下形式:
Col_A = distance1000
Col_B = 7_13_2010
Col_C = 1_13PM
Col_D = AveryDennisonAD
Col_E = 2300008
Col_F = 10S
Col_G = Lock.csv
如果我可以从Col_G截断.csv,那也很好,尽管这不是必需的。 这是到目前为止我没有正确解析日期和时间的Col_B和Col_C的代码:
DECLARE @RowCount INT, @I INT
SET @RowCount = (SELECT COUNT(FileName) FROM Files)
SET @I = 1
WHILE (@I <= @RowCount)
BEGIN
DECLARE @FileName VARCHAR(1000)
SELECT @FileName = FileName FROM Files WHERE FileID = @I
UPDATE Files
SET Col_A = dbo.fnSplit(@FileName, '_', 1),
Col_B = dbo.fnSplit(@FileName, '_', 2),
Col_C = dbo.fnSplit(@FileName, '_', 3),
Col_D = dbo.fnSplit(@FileName, '_', 4),
Col_E = dbo.fnSplit(@FileName, '_', 5)
--etc.etc.
WHERE FileID = @I
SET @I = @I + 1
END
如何修改SET语句,以便有时“跳过”定界符(并将其包括在新列数据中)并在其他时间使用下划线定界符拆分列?
我希望这很清楚。 提前致谢!
除非我缺少明显的内容,否则您是否可以将想要的元素连接到新字段中?
在下面的示例中,我还删除了循环,因为它似乎没有必要-但是,如果没有您的fnSplit
过程的某些详细信息,我不能肯定地说:
UPDATE Files
SET Col_A = dbo.fnSplit(FileName, '_', 1),
Col_B = dbo.fnSplit(FileName, '_', 2)
+ '_' + dbo.fnSplit(FileName, '_', 3)
+ '_' + dbo.fnSplit(FileName, '_', 4),
Col_C = dbo.fnSplit(FileName, '_', 5),
Col_D = dbo.fnSplit(FileName, '_', 6),
Col_E = dbo.fnSplit(FileName, '_', 7)
etc
(从可用性的角度来看,最好为列使用更有意义的名称)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.