简单问题
我在字符串字段中具有以下类型的结果
'Number=123456'
'Number=1234567'
'Number=12345678'
关于值可以在5到8位之间变化的方式,我该如何从字符串中提取值
到目前为止,我已经做到了,但是我怀疑是否符合我的要求
SELECT substring('Size' from 8 for ....
如果我可以告诉它从=号开始,直到最后将有所帮助!
答案 0 :(得分:2)
答案 1 :(得分:2)
基于此问题: Split comma separated column data into additional columns
您可能可以执行以下操作:
SELECT *, split_part(col, '=', 2)
FROM table;
答案 2 :(得分:2)
另一种适合您的规格(修剪7个主要字符)的简单解决方案是使用right():
right(str, -7)
演示:
SELECT str, right(str, -7)
FROM (
VALUES ('Number=123456')
, ('Number=1234567')
, ('Number=12345678')
) t(str);
str | right
-----------------+----------
Number=123456 | 123456
Number=1234567 | 1234567
Number=12345678 | 12345678
答案 3 :(得分:2)
您可以使用regexp_matches
:
with t(str) as
(
select 'Number=123456' union all
select 'Number=1234567' union all
select 'Number=12345678' union all
select 'Number=12345678x9'
)
select t.str as "String",
regexp_matches(t.str, '=([A-Za-z0-9]+)', 'g') as "Number"
from t;
String Number
-------------- ---------
Number=123456 123456
Number=1234567 1234567
Number=12345678 12345678
Number=12345678x9 12345678x9
--> the last line shows only we look chars after equal sign even if non-digit