У меня есть таблица, как показано ниже
+-----+---------------------------------------------+
| id | trans |
+-----+---------------------------------------------+
| 101 | 98ML TUTI SUGAR LTD 376/0.4 GAMA GL |
+-----+---------------------------------------------+
| 102 | 112 ML SILVA ENERGY SYSTEMS/816/0.5/NABP-CI |
+-----+---------------------------------------------+
| 103 | 30 ML FRG IOD 316/0.5/NABP-CI |
+-----+---------------------------------------------+
| 104 | 40ML DAUD MACHINERY 316/0.5MM/NABP CI |
+-----+---------------------------------------------+
| 105 | 10 ML TINU CEL HAST/0.6/BPMLP-CO |
+-----+---------------------------------------------+
Я хочу разделить этот столбец trans
на несколько частей.
- ML - значение перед словом 'ML'
- LEN - это значение до первого '/' после описания
- THICKNESS - значение до второго '/' после LEN
- ORDERID - значение после THICKNESS
Итак, ожидаемый результат будет примерно таким:
+-----+---------------------------------------------+-----+-----+-----------+----------+
| id | trans | ML | LEN | THICKNESS | ORDERID |
+-----+---------------------------------------------+-----+-----+-----------+----------+
| 101 | 98ML TUTI SUGAR LTD 376/0.4 GAMA GL | 98 | 376 | 0.4 | GAMA GL |
+-----+---------------------------------------------+-----+-----+-----------+----------+
| 102 | 112 ML SILVA ENERGY SYSTEMS/816/0.5/NABP-CI | 112 | 816 | 0.5 | NABP-CI |
+-----+---------------------------------------------+-----+-----+-----------+----------+
| 103 | 30 ML FRG IOD 866/0.5/NABP-CI | 30 | 866 | 0.5 | NABP-CI |
+-----+---------------------------------------------+-----+-----+-----------+----------+
| 104 | 40ML DAUD MACHINERY 497/0.5MM/NABP CI | 40 | 497 | 0.5 | NABP-CI |
+-----+---------------------------------------------+-----+-----+-----------+----------+
| 105 | 10 ML TINU CEL HAST/0.6/BPMLP-CO | 10 | | 0.6 | BPMLP-CO |
+-----+---------------------------------------------+-----+-----+-----------+----------+
То, что я пробовал:
SELECT (SUBSTRING(trans,CHARINDEX('/',trans)-4,LEN(trans))) as MYATTR
INTO #OTHER_VALUES
from logistics
select *,SUBSTRING(MYATTR,1,4) AS LENG,
SUBSTRING(MYATTR,6,3) AS THICKNESS
from #OTHER_VALUES
Но это дает мне неправильные значения. Проблема в том, что есть дополнительные / прибывающие и иногда пустые значения.
FIDDLE
MYSAMPLEDATAANDOP