У меня есть вопрос относительно реализации запроса Teradata - PullRequest
0 голосов
/ 14 июня 2019

Сценарий: -

Если столбец 1 имеет значения, начинающиеся с #, затем вырежьте первые 8 символов, а если он заканчивается на AB и начинается с X, используйте только среднее

Пожалуйста, помогите мне датьИдея как это выглядит в кодировке Teradata

1 Ответ

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

Предполагая, что "использовать только среднее" означает все между начальным X и окончательным AB для этого второго критерия в вашем вопросе, у вас есть несколько вариантов.

1.Использование regexp_replace():

SELECT REGEXP_REPLACE('XSOMETHINGAB', '^X(.*)AB$|^#(.{1,8}).*', '\1\2');

SOMETHING

SELECT REGEXP_REPLACE('#SOMETHINGAB', '^X(.*)AB$|^#(.{1,8}).*', '\1\2')

SOMETHIN

2. Или заявление о кейсе:

SELECT 
'XSOMETHINGAB' as mystring, 
CASE 
    WHEN mystring LIKE '#%' THEN SUBSTRING(mystring FROM 2 FOR 8)
    WHEN mystring LIKE 'X%AB' THEN SUBSTRING(mystring FROM 2 FOR "LENGTH"(mystring) - 3)
    ELSE mystring
    END
...