我对 Teradata 查询实施有疑问
I have a question regarding Teradata query implementation
场景:-
如果第 1 列的值以 # 开头,则剪切前 8 个字符
如果它以 AB 结尾并以 X 开头,则仅使用中间
请帮我看看它在 Teradata 编码中的样子
假设 "use only middle" 表示问题中第二个条件的开始 X
和结束 AB
之间的所有内容,您有几个选择。
1.Use regexp_replace()
:
SELECT REGEXP_REPLACE('XSOMETHINGAB', '^X(.*)AB$|^#(.{1,8}).*', '');
SOMETHING
SELECT REGEXP_REPLACE('#SOMETHINGAB', '^X(.*)AB$|^#(.{1,8}).*', '')
SOMETHIN
2.Or一个案例陈述:
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
场景:-
如果第 1 列的值以 # 开头,则剪切前 8 个字符 如果它以 AB 结尾并以 X 开头,则仅使用中间
请帮我看看它在 Teradata 编码中的样子
假设 "use only middle" 表示问题中第二个条件的开始 X
和结束 AB
之间的所有内容,您有几个选择。
1.Use regexp_replace()
:
SELECT REGEXP_REPLACE('XSOMETHINGAB', '^X(.*)AB$|^#(.{1,8}).*', '');
SOMETHING
SELECT REGEXP_REPLACE('#SOMETHINGAB', '^X(.*)AB$|^#(.{1,8}).*', '')
SOMETHIN
2.Or一个案例陈述:
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