我对Teradata查询实施有疑问

时间:2019-06-14 12:57:53

标签: teradata

场景:-

如果col 1的值以#开头,则剪切前8个字符 并且如果它以AB结尾并以X开头,则仅使用中间

请帮助我了解一下Teradata编码的样子

1 个答案:

答案 0 :(得分:0)

假设“仅中间使用”表示问题中第二个条件在开始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