A short demo on how to split strings with delimiters into columns.
In this demonstration I have delimited strings of invoices that I want to split into separate columns. The column separator character is |, but it could be something else. To create the sample data, run the following T-SQL (in tempdb for instance):
CREATE TABLE InvoiceString (Col1 VARCHAR(1000))
GO
INSERT InvoiceString VALUES ('123|2016-05-25|8000')
INSERT InvoiceString VALUES ('456|2017-05-25|4000')
GO

The columns are InvoiceNo, InvoiceDate and Amount.
To split the strings into separate columns, run the following T-SQL:
;WITH CTE_Split AS
(
SELECT CAST('<T><C>' + REPLACE(Col1,'|','</C><C>') + '</C></T>' AS XML) AS X
FROM InvoiceString
)
SELECT
X.value('/T[1]/C[1]','INT') AS InvoiceNo
,X.value('/T[1]/C[2]','DATE') AS InvoiceDate
,X.value('/T[1]/C[3]','INT') AS Amount
FROM CTE_Split
The strings are splitted into three columns:
