场景:-
如果col 1的值以#开头,则剪切前8个字符 并且如果它以AB结尾并以X开头,则仅使用中间
请帮助我了解一下Teradata编码的样子
答案 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