我们正在从MS SQL进行转换。 原始代码是
反向(LTRIM(RTRIM(子(反向( “串”),1,(CHARINDEX(” ”,反向( “串”)))))))
所以它的作用是它在结束时搜索一个字符串,直到它找到一个空格,它将该字符串作为其值
EX。
'ABCD 123'结果为'123'
'STEP 12 3-2'结果为'3-2'
到目前为止,我有这个SELECT substr('ABCDE 1234',字符('ABCDE 1234') - 2) 但不知道如何在Teradata进行反向搜索:(
答案 0 :(得分:0)
您可以尝试以下操作:
<强>查询:强>
select strtok('STEP 12 3-2',' ',character_length('STEP 12 3-2') - character_length(Oreplace('STEP 12 3-2',' ',''))+1)
<强>输出:强>
3-2
<强>查询:强>
select strtok('ABCD 123',' ',character_length('ABCD 123') - character_length(Oreplace('ABCD 123',' ',''))+1)
<强>输出:强>
123
strtok打破了具有特定分隔符的字符串,而character_length + oreplace将为我们提供&#34; space&#34;的出现次数。
答案 1 :(得分:0)
substr + instr
div.spc:nth-of-type(3n){
display:none;
}
select 'ABCD 123' as str
,substr(str,instr(str,' ',-1)+1) as token
;
+----------+-------+
| str | token |
+----------+-------+
| ABCD 123 | 123 |
+----------+-------+
答案 2 :(得分:0)
regexp_substr (如果您知道正则表达式但CPU成本较高,则非常简单)
select 'STEP 12 3-2' as str
,regexp_substr(str,'[^ ]*$') as token
;
+-------------+-------+
| str | token |
+-------------+-------+
| STEP 12 3-2 | 3-2 |
+-------------+-------+
{{1}}