#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)