【发布时间】:2022-01-07 10:52:48
【问题描述】:
我有一个仓库零件表,每一列都有每个零件的描述。描述中包含产品的尺寸,格式始终为:HeightxWidthxDepth。
描述可以是任意数量的字符,因此维度并不总是在字符串的相同位置。
这是表格的样例:
| Part No | Description |
| -------- | ------------------------- |
| ABCDEFGH | Cabinet 245 2070x1014x570 |
| AFFDETGL | Shelves 20104 870x300x330 |
在我的查询中,我想选择每个维度,使表格看起来像这样:
| Part No | Height| Width | Depth |
| -------- | ----- | ----- | ----- |
| ABCDEFGH | 2070 | 1014 | 570 |
| AFFDETGL | 870 | 300 | 330 |
我已经设法使用 REGEX 通过以下查询从列中提取完整维度:
SELECT
PART_NO,
REGEXP_SUBSTR(DESCRIPTION, '(\d+(\.\d+|)\s?x\s?\d+(\.\d+|)(\s?x\s?\d*(\.?\d+|))?)')
FROM Products
但我不确定如何在不使用 INSTR 之类的内容的情况下将其拆分为 3 个单独的列。
谁能告诉我最好的方法是什么?
【问题讨论】: