Разделите строку на разные части - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть таблица, как показано ниже

+-----+---------------------------------------------+
| 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 на несколько частей.

  1. ML - значение перед словом 'ML'
  2. LEN - это значение до первого '/' после описания
  3. THICKNESS - значение до второго '/' после LEN
  4. 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

...