I need to split one column into multiple columns by delimiters. So I have written following script and its working fine.
DECLARE @delimiter VARCHAR(50)
SET @delimiter=','
;WITH CTE AS
(
SELECT
[ODC_Number],
CAST('<M>' + REPLACE([ODC_Number], @delimiter , '</M><M>') + '</M>' AS XML)
AS [Employee Name XML]
FROM tbl_ODC_Number
)
SELECT
[ODC_Number] as ODC_Number,
[Employee Name XML].value('/M[1]', 'varchar(50)') As [ODC_Number1],
[Employee Name XML].value('/M[2]', 'varchar(50)') As [ODC_Number2],
[Employee Name XML].value('/M[3]', 'varchar(50)') As [ODC_Number3]
FROM CTE
Now I need to know how to get this result in a temp table and run a following script to check format of each new column to make sure each column data have right format:
Format:
ODC-XXXX-XXX-XXXXXX ODC-2018-076-895689
So I've written following code (this needs to be written for each column)
Select * from TEMPDB
Where
Len (ODC_Number1) < '19' or
ODC_Number1 not like '%[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]%' or
ODC_Number1 like '%[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]-[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]%' or
ODC_Number1 like '%[%*$#@;&/.\ ]%' or
ODC_Number1 not like '[CRI]%' or
ODC_Number1 like '%-CRI%'
I've written those two scripts but don't know how to combine them?
To get your data into a temp table simply do a SELECT * INTO #Temp FROM CTE
DECLARE @delimiter VARCHAR(50)
SET @delimiter=','
;WITH CTE AS
(
SELECT
[ODC_Number],
CAST('<M>' + REPLACE([ODC_Number], @delimiter , '</M><M>') + '</M>' AS XML)
AS [Employee Name XML]
FROM tbl_ODC_Number
)
SELECT
[ODC_Number] as ODC_Number,
[Employee Name XML].value('/M[1]', 'varchar(50)') As [ODC_Number1],
[Employee Name XML].value('/M[2]', 'varchar(50)') As [ODC_Number2],
[Employee Name XML].value('/M[3]', 'varchar(50)') As [ODC_Number3]
INTO #Temp
FROM CTE
Now for your checks execute your code for each column separated with OR
Select *
from #Temp
Where
(
Len (ODC_Number1) < '19' or
ODC_Number1 not like '%[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]%' or
ODC_Number1 like '%[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]-[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]%' or
ODC_Number1 like '%[%*$#@;&/.\ ]%' or
ODC_Number1 not like '[CRI]%' or
ODC_Number1 like '%-CRI%'
)
OR
(
Len (ODC_Number2) < '19' or
ODC_Number2 not like '%[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]%' or
ODC_Number2 like '%[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]-[CRI]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]%' or
ODC_Number2 like '%[%*$#@;&/.\ ]%' or
ODC_Number2 not like '[CRI]%' or
ODC_Number2 like '%-CRI%'
)
OR
(...... You get the idea....
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.