Искать только по буквенно-цифровым символам столбца

У меня есть столбец таблицы типа nvarchar.
В качестве примера, скажем, одна из записей A320 - Airbus, В этом случае содержит буквенно-цифровые символы и дефис.

Когда я ищу 320Aпоиск должен найти его, игнорируя 2 пробела и дефис между двумя словами.

В настоящее время я могу добиться этого, делая это

SELECT DISTINCT Name 
FROM Entity
WHERE REPLACE(REPLACE(Name, ' ', ''), '-', '') LIKE '%320A%'; 

Но если мне нужно добавить еще несколько escape-символов, я должен продолжать применять REPLACE за каждый новый побег чарс.

Было бы хорошо, если бы я мог сделать что-то вроде этого:

SELECT DISTINCT Name
FROM Entity
WHERE REGEXP(Name, '^[A-Za-z0-9]+$') LIKE '%320A%';

2 ответа

Это не очень хороший обходной путь, но это обходной путь.

Это легко, если вы знаете, где будет вырезана строка поиска:

SELECT DISTINCT Name 
FROM Entity
WHERE Name REGEXP '320[^a-zA-Z0-9]*A'

но если вы не знаете, вы должны добавить регулярное выражение [^a-zA-Z0-9] между каждым персонажем. Это немного глупо, но это работает.

Попробуйте это и посмотрите, работает ли это

     SELECT DISTINCT replace(replace(replace(replace(Name,' ',''),'(',''),')',''),'-','') 
     as Name
     FROM Entity where 
     Name RLIKE '^[A-Za-z0-9]+$';
Другие вопросы по тегам