我有一个字符串,其中 COLUMN DIE_SIZE 包含“48.6 X 90.6”。我想把这个字符串分成size_x和size_y。我只能想办法分割die_y
示例字符串:
DIE_DIZE 48.6×90.6 77.9×57.0 47.0×40.0 57.0×71.0 61.0×80.0 54.5×74.0 42.0×40.0 80.0×85.0
我通过 regexp_substr 编写 SQL,但只能对 DIE_Y 进行子字符串化。 为什么会发生这种情况以及如何解决它?
select distinct
DIE_SIZE ,
regexp_substr(replace(replace(DIE_SIZE,' ',''),'x','X'), '[^X]+$', 2, 1) as die_x,
regexp_substr(replace(replace(DIE_SIZE,' ',''),'x','X'), '[^X]+$', 1, 1) as die_y
from ORD_DIE_LOT
期待输出
DIE_SIZE | DIE_X | DIE_Y |
---|---|---|
48.6×90.6 | 48.6 | 90.6 |
77.9×57.0 | 77.9 | 57.0 |
首先,您必须使用
RECURSIVE CTE
将您的 stping 拆分为单独的行,之后您可以将块拆分为维度。 SQL 下面
with rws as (
select '48.6 X 90.6 77.9 X 57.0 47.0 X 40.0 57.0 X 71.0 61.0 X 80.0 54.5 X 74.0 42.0 X 40.0 80.0 X 85.0' str from dual
),
sizes as (
select regexp_substr (
str,
'[0-9.]+ X [0-9.]+',
1,
level
) value
from rws
connect by level <= REGEXP_COUNT(str, 'X')
) SELECT
value,
regexp_substr (
value,
'[0-9.]+',
1,
1
) x,
regexp_substr (
value,
'.[0-9.]+$',
1,
1
) y
FROM sizes;
在这里您可以尝试和测试 SQL 代码