Teradata: лучший способ поиска элементов с использованием подстановочного знака

#sql #teradata

#sql #teradata

Вопрос:

Я пытаюсь выполнить поиск элементов, используя предложение where, подобное этому:

 SELECT *
FROM TABLE
WHERE ITEMID LIKE '%[0-9][abc][0-9]%'
  

Чего я пытаюсь достичь, так это получить данные, itemID содержащие только алфавиты 'a' , 'b' или 'c' , начинающиеся и заканчивающиеся числом в середине буквенно-цифрового значения.

Например, '337Z112' не следует извлекать, потому что это не 'a' , 'b' или 'c' .

Другой пример — это 'edcb9a9b' который следует извлечь, поскольку он содержит '9a9' .

Заранее спасибо!

Ответ №1:

В Teradata вам нужно было бы использовать REGEXP_SIMILAR() для сравнения с регулярным выражением:

 SELECT *
FROM mytable
WHERE RegExp_Similar(itemid, '.*d[abc]d.*', 'i') = 1;
  

ПРИМЕЧАНИЕ: d это сокращение для [0-9] (символьного класса digits)