Регулярное выражение для извлечения размера обуви из столбца строки - PullRequest
0 голосов
/ 28 января 2020

У меня есть база данных со строковым столбцом product_name , которая имеет такие данные, как:

Vans Classic Slip-On Black & White Checkerboard/ White - veľkosť (US) : 6 (EUR: 38)

Vans Old Skool - čierna - veľkosť (US) : 9.5 (EUR: 42.5)

Я пытаюсь извлечь размер США ...

SELECT REGEXP_SUBSTR("product_name", ...) AS "size"

... с желаемым выводом, как это.

size
6
9.5

Я пробовал это, но безрезультатно

SELECT REGEXP_SUBSTR("product_name", '(US)(\d+)') AS "size"

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Мне нужно согласиться с B001 , это может быть не лучшим способом сохранения вашей информации. Однако, если вы уверены, что ваши строки будут иметь этот формат, вы можете использовать это регулярное выражение

\(US\) ?: ?(\d+\.?\d*) \(EUR: ?(\d+\.?\d*)\)

Это будет соответствовать сначала размеру обуви в США, а затем евро. Вот визуальное объяснение регулярного выражения Regular expression visualization

Обратите внимание, что это регулярное выражение будет соответствовать ОБА размерам, я не уверен, какой вы предпочитаете

Вы можете проверить больше случаев в этом регулярном выражении101

1 голос
/ 28 января 2020

При работе в веб-интерфейсе мне пришлось удвоить sh моих слешей. Таким образом, следующее работает так, как вы хотите.

select REGEXP_SUBSTR(str, '\\(US\\)\\s\\:\\s(\\d+\\.?\\d*)',1,1,'i',1)
from values ('Vans Classic Slip-On Black & White Checkerboard/ White - veľkosť (US) : 6 (EUR: 38)'),
       ('Vans Old Skool - čierna - veľkosť (US) : 9.5 (EUR: 42.5)') v(str);

дает:

REGEXP_SUBSTR(STR, '\\(US\\)\\S\\:\\S(\\D+\\.?\\D*)',1,1,'I',1)
6
9.5 
...