У меня есть два столбца LN и HN, которые являются буквенно-цифровыми. Это мои данные:
LN HN
A1 B1
A100 B100
TN73OP1 TN73OP99
Мне нужно написать SQL-запрос / функцию, которая будет разбивать буквенно-цифровую часть и сравнивать, если альфа-часть LN = альфа-часть HN, а цифровая часть LN = числовая часть HN. Однако я хочу только это для сравнения данных, которые имеют только 2 части и имеют форму (a + n), а не a + n + a + n, т.е. TN73OP1, который имеет 4 части и т. д. Я использую SQL Server Management Studio
Я пытался включить patindex('[A-Z]+[0-9]+[A-Z]+[0-9]+',LN )>0
, но '+' не принимается как "1 / более экземпляров"
SELECT AB.LN,AB.HN,
CASE WHEN AB.FirstLN=AB.FirstHN THEN 'YES' ELSE 'NO' END AS FLAG1
,CASE WHEN AB.SecondLN=AB.SecondHN THEN 'YES' ELSE 'NO' END AS FLAG2
FROM
(SELECT distinct LN
,SUBSTRING(LN,0, PATINDEX('%[0-9]%',LN)) AS FirstLN
,SUBSTRING(LN, PATINDEX('%[0-9]%',LN),len(LN)) AS SecondLN,HN
,SUBSTRING(HN, 0, patindex('%[0-9]%', HN)) AS FirstHN
,SUBSTRING(HN, PATINDEX('%[0-9]%',HN),len(HN))AS SecondHN,
FROM TABLE where PATINDEX('[A-Z]%[0-9]',LN)>0
and PATINDEX('[A-Z]%[0-9]',HN)>0
and LN<>HN and LN not like '%-%' and HN not like '%-%'
AND LN NOT LIKE '%-%' AND HN NOT LIKE '%-%')AB