teradata - 我有一个关于 Teradata 查询实施的问题
问题描述
设想:-
如果 col 1 的值以 # 开头,则剪切前 8 个字符 如果它以 AB 结尾并且以 X 开头,则仅使用中间
请帮助我了解它在 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
推荐阅读
- android - 无法在firebase动态链接的REST api中的请求正文中传递ofl参数?
- python - matplotlib secondary_xaxis() 函数不起作用
- javascript - 开玩笑,匹配正则表达式
- http - 如何在没有端口范围和 index.html 的情况下访问网页
- mesh-network - 在 batman-adv 网状网络中配置多个网关
- http - Сopas。在请求中传递标头并选择请求方法
- flutter - 注册或登录时 Flutter onAuthStateChanged 流未更新子项
- python - 如何正确地将 Mnist 数据集(idx 格式)解析为 python 数组?
- matlab - 在 Matlab 中打印字符串的问题
- c# - 除了名称之外,我将如何处理两个完全相同的类?