首页 > 解决方案 > 我有一个关于 Teradata 查询实施的问题

问题描述

设想:-

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

请帮助我了解它在 Teradata 编码中的样子

标签: teradata

解决方案


假设“仅使用中间”意味着您问题中第二个标准的开始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

推荐阅读