假设我有一个字段:
product_strength
10MG/ML
0.25MG
25MG
0.125MG
Run Code Online (Sandbox Code Playgroud)
如何仅提取“数字”部分然后转换为数字?我可以做到这一点:regexp_replace(product_strength, '(\D|!\.)','','g')::numeric AS result_numeric
但问题在于它实际上并没有考虑小数点。换句话说,这将返回
product_strength result_numeric
10MG/ML 10
0.25MG 25
25MG 25
0.125MG 125
Run Code Online (Sandbox Code Playgroud)
但我想回来
product_strength result_numeric
10MG/ML 10
0.25MG 0.25
25MG 25
0.125MG 0.125
Run Code Online (Sandbox Code Playgroud)
我会为此使用 regexp_matches:
select (regexp_matches(product_strength, '[0-9]+\.?[0-9]*'))[1]::numeric
from the_table
Run Code Online (Sandbox Code Playgroud)
regexp_matches() 返回所有匹配字符串的数组,这就是为什么[1]需要 。
| 归档时间: |
|
| 查看次数: |
4362 次 |
| 最近记录: |