Как найти 1 / более экземпляров [A-Z] или [0-9] без использования + - PullRequest
0 голосов
/ 13 июня 2019

У меня есть два столбца 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 

1 Ответ

0 голосов
/ 13 июня 2019

сравнить, если альфа-часть LN = альфа-часть HN и числовая часть LN = числовая часть HN. Однако я хочу, чтобы он сравнивал только данные, которые имеют только 2 части

Насколько я могу судить из этого описания, вы хотите знать, допустимы ли значения и имеют ли они альфа-цифры, но не alphas-digits-alphas.

Если это так:

select (case when ln like '[A-Z]%[0-9]' and
                  ln not like '[A-Z]%[0-9]%[A-Z]' and
                  ln = hn
             then 'true'
             else 'false'
        end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...