0

我有一个包含字符串值的列的表。字符串值始终以字母“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
4

2 回答 2

2

看起来你后面还有一个空格'T'。这是一种方法:

select StringColumn, substr(StringColumn, 2 - instr(reverse(StringColumn), 'T')) as Values
from . . .

这会在反转的字符串中找到 的位置'T',然后从字符串末尾取出那么多字符减去 2。

编辑:

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 Fiddle 在这里

第一个版本的问题是它Values是Oracle 中的保留字,因此查询无法编译。

于 2013-07-23T01:32:16.980 回答
0

我获取了提供的输入字符串并获得了“T”最后一次出现的位置,然后在下面获取了一个子字符串是查询:

SELECT StringColumn,Trim(SubStr(StringColumn,INSTR(StringColumn,'T',-1 )+1)) FROM 测试;

谢谢,库斯图布·阿瓦达尼

于 2013-07-23T03:35:40.947 回答