Мне нужно разделить один столбец на несколько столбцов разделителями. Итак, я написал следующий скрипт и он работает нормально.
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
Теперь мне нужно знать, как получить этот результат во временной таблице и запустить следующий скрипт, чтобы проверить формат каждого нового столбца, чтобы убедиться, что данные каждого столбца имеют правильный формат:
Формат:
ODC-XXXX-XXX-XXXXXX ODC-2018-076-895689
- Длина каждого значения должна составлять 19 цифр
- Запуск только с ODC
- Проверьте, есть ли другие разделители, кроме запятых
Итак, я написал следующий код (это нужно написать для каждого столбца)
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%'
Я нахожусь на очень базовом уровне SQL еще. Я был бы признателен, если бы кто-нибудь мог помочь мне заставить это работать вместе.
Большое вам спасибо.
Я написал эти два сценария, но не знаю, как их объединить