我有一个包含String值的列的表。字符串值总是以字母“T”作为最后一个字符结束,空格“”和数字紧跟在字符串后面:
StringColumn
"asdjadhasdT 32 asjashudT 2"
"tytweytwe aweriuhfT 23"
"ajkjsdT 6 asdajkdjkjT 1445"
"kjkasd aaassT 980"
我想在另一栏中获取该号码。
换句话说:
StringColumn | ColumnValues
"asdjadhasdT 32 asjashudT 2" | 2
"tytweytwe aweriuhfT 23" | 23
"ajkjsdT 6 asdajkdjkjT 1445" | 1445
"kjkasd aaassT 980" | 980
答案 0 :(得分:2)
看起来你在'T'
之后还有一个空格。这是一种方法:
select StringColumn, substr(StringColumn, 2 - instr(reverse(StringColumn), 'T')) as Values
from . . .
这会在反向字符串中找到'T'
的位置,然后从字符串的末尾开始减去两个字符数。
编辑:
with t as (
select 'asdjadhasdT 32 asjashudT 2' as StringColumn from dual union all
select 'tytweytwe aweriuhfT 23' as StringColumn from dual union all
select 'ajkjsdT 6 asdajkdjkjT 1445' as StringColumn from dual union all
select 'kjkasd aaassT 980' as StringColumn from dual
)
select StringColumn,
substr(StringColumn, 2-instr(reverse(StringColumn), 'T')) as "Values"
from t;
SQL小提琴是here。
第一个版本的问题是Values
是Oracle中的保留字,因此查询无法编译。
答案 1 :(得分:0)
我接受了提供的输入字符串 得到'T'的最后一次出现的位置,然后在下面取一个子串是查询:
SELECT StringColumn,Trim(SubStr(StringColumn,INSTR(StringColumn,'T', - 1)+1))FROM test;
谢谢, Koustubh Avadhani