PostgreSQL中移除数字后的空格 寻求实现方案
PostgreSQL 移除文本中数字后空格的实现方法
需求说明:需要移除文本里数字(包含小数形式)后面紧跟的空格,输入输出示例如下:
输入示例
medication_title CLORIDRATO DE VENLAFAXINA 75 MG VIIBRYD 40 MG KTRIZ UNO 0.6 U/G
输出示例
medication_title medication_title2 CLORIDRATO DE VENLAFAXINA 75 MG CLORIDRATO DE VENLAFAXINA 75MG VIIBRYD 40 MG VIIBRYD 40MG KTRIZ UNO 0.6 U/G KTRIZ UNO 0.6U/G
实现方案
在PostgreSQL中,可通过regexp_replace()函数配合正则表达式完成需求,核心是匹配数字(整数/小数)后的空格并将其替换为空。
正则逻辑说明
(\d+\.?\d*):匹配数字片段,\d+匹配1个及以上数字,\.?匹配可选小数点,\d*匹配小数点后可选数字,覆盖整数和小数场景\s:匹配数字后紧跟的单个空格- 用反向引用
\1保留匹配到的数字部分,仅替换掉后续空格
示例SQL
假设存在表medications,包含medication_title字段,执行以下语句即可生成处理后的字段:
SELECT medication_title, regexp_replace(medication_title, '(\d+\.?\d*)\s', '\1', 'g') AS medication_title2 FROM medications;
- 参数
'g'代表全局替换,会处理文本中所有符合规则的匹配项,而非仅替换第一个。
执行上述语句后,就能得到示例中的输出效果,精准移除数字后的空格。
内容的提问来源于stack exchange,提问作者Mariana
相关产品推荐
相关产品推荐

