在使用 Regexp 方面需要帮助
Need help in using Regexp
SELECT value from table1 limit 3;
当我运行上述查询时,我得到以下结果:
;12770258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01
;12880258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01
;12990258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01
我希望结果显示如下:
12770258
12880258
12990258
如何使用正则表达式实现这个?请指导。
如果您知道它始终是系列中的“第二个”值,则可以只使用 SPLIT。如果那不是真的,那么 REGEPX 版本将无法帮助您以太币。
SELECT ';12770258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01' as col1
,split(col1,';')[1]::text;
COL1
SPLIT(COL1,';')[1]::TEXT
;12770258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01
12770258
我们可以在这里使用REGEXP_SUBSTR
:
SELECT REGEXP_SUBSTR(value, '\d+', 1, 1, 'i', 1) AS output
FROM yourTable;
上面对 REGEXP_SUBSTR
的调用查找列中的第一个数字,从列的开头开始搜索。在正则表达式中,\d+
匹配一组一个或多个数字字符。
SELECT value from table1 limit 3;
当我运行上述查询时,我得到以下结果:
;12770258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01
;12880258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01
;12990258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01
我希望结果显示如下:
12770258
12880258
12990258
如何使用正则表达式实现这个?请指导。
如果您知道它始终是系列中的“第二个”值,则可以只使用 SPLIT。如果那不是真的,那么 REGEPX 版本将无法帮助您以太币。
SELECT ';12770258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01' as col1
,split(col1,';')[1]::text;
COL1 | SPLIT(COL1,';')[1]::TEXT |
---|---|
;12770258;;;;103=::dupe::0|112=::dupe::0|114=search-results#product-id#Lettuce#not-recommended#r02#s01 | 12770258 |
我们可以在这里使用REGEXP_SUBSTR
:
SELECT REGEXP_SUBSTR(value, '\d+', 1, 1, 'i', 1) AS output
FROM yourTable;
上面对 REGEXP_SUBSTR
的调用查找列中的第一个数字,从列的开头开始搜索。在正则表达式中,\d+
匹配一组一个或多个数字字符。