Đây là một cách tiếp cận dễ dàng hơn nhiều để truy cập vào dữ liệu được phân tách bằng đường ống dẫn của bạn. Bạn tìm thấy dữ liệu giống bảng của mình trong # temp2. Từ đây trở đi có thể dễ dàng UPDATE
, INSERT
hoặc MERGE
dữ liệu của bạn vào mục tiêu của bạn.
Chú ý:Tôi chỉ có thể đoán ý nghĩa của các cột của bạn, vì vậy tên cột có thể là rác ...
CREATE TABLE #temp1(WHOLEROW VARCHAR(8000));
INSERT INTO #temp1 VALUES
('F20160323-1000|FSI|BISCOCHO|DELIVERED|42317|||||GINA T|TENANT|42311')
,('F20160323-1001|FSI|MARTINNE|DELIVERED|42314|||||MERLIE STRADA|IN LAW|42311')
,('F20160323-1002|FSI|MANALO|DELIVERED|42313|||||GINA A|TENANT|42311')
,('F20160323-1004|FSI|HAMOY CAJAYON|DELIVERED|42311|||||MERLIE QTRADA|IN LAW|42311')
,('F20160323-1003|FSI|FRANCISCA|DELIVERED|42312|||||GINA B|TENANT|42311')
,('F20160323-1005|FSI|NINA|DELIVERED|42318|||||MERLIE STRADA|IN LAW|42311');
;WITH Splitted(AsXml) AS
(
SELECT CAST('<x>' + REPLACE(t1.WHOLEROW,'|','</x><x>') + '</x>' AS XML)
FROM #temp1 AS t1
)
SELECT AsXml.value('x[1]','varchar(max)') AS ID
,ID_Splitted.*
,AsXml.value('x[2]','varchar(max)') AS FSI_Field
,AsXml.value('x[3]','varchar(max)') AS CAPTION
,AsXml.value('x[4]','varchar(max)') AS STATUS
,AsXml.value('x[5]','varchar(max)') AS NUMBER
,AsXml.value('x[6]','varchar(max)') AS Fld1
,AsXml.value('x[7]','varchar(max)') AS Fld2
,AsXml.value('x[8]','varchar(max)') AS Fld3
,AsXml.value('x[9]','varchar(max)') AS Fld4
,AsXml.value('x[10]','varchar(max)') AS TARGET
,AsXml.value('x[11]','varchar(max)') AS TARGET_TYPE
,AsXml.value('x[12]','varchar(max)') AS TARGET_NUMBER
INTO #temp2
FROM Splitted
CROSS APPLY(SELECT LEFT( AsXml.value('x[1]','varchar(max)'),1) AS FirstLetter
,CAST(SUBSTRING(AsXml.value('x[1]','varchar(max)'),2,8) AS DATE) AS IncludedDate
,CAST(SUBSTRING( AsXml.value('x[1]','varchar(max)'),11,100) AS INT) AS IncludedNumber) AS ID_Splitted;
SELECT * FROM #temp2;
DROP TABLE #temp2;
DROP TABLE #temp1;
Kết quả
ID FirstLetter IncludedDate InclNmbr FSI CAPTION STATUS NUMBER TARGET TYPE NUMBER
F20160323-1000 F 2016-03-23 1000 FSI BISCOCHO DELIVERED 42317 GINA T TENANT 42311
F20160323-1001 F 2016-03-23 1001 FSI MARTINNE DELIVERED 42314 MERLIE STRADA IN LAW 42311
F20160323-1002 F 2016-03-23 1002 FSI MANALO DELIVERED 42313 GINA A TENANT 42311
F20160323-1004 F 2016-03-23 1004 FSI HAMOY CAJAYONDELIVERED 42311 MERLIE QTRADA IN LAW 42311
F20160323-1003 F 2016-03-23 1003 FSI FRANCISCA DELIVERED 42312 GINA B TENANT 42311
F20160323-1005 F 2016-03-23 1005 FSI NINA DELIVERED 42318 MERLIE STRADA IN LAW 42311