如何通过SELECT语句提取字段中的数字与分号并格式化输出
用SELECT语句提取VAL字段中的数字与分号
原始样本数据表:
ID VAL 1 1.abc; 2.bcd; 3.a-sd; 4.fhg 2 5.bsfacd; 3.afgh-sd; 4.fvbnbhg
需求是查询后将VAL字段处理为仅保留数字和分号的格式,目标结果:
ID VAL 1 1;2;3;4; 2 5;3;4;
不同数据库的实现方案
MySQL/MariaDB
使用REGEXP_REPLACE函数全局替换非数字和分号的字符:
SELECT ID, REGEXP_REPLACE(VAL, '[^0-9;]', '') AS VAL FROM your_table;
SQL Server(2017及以上版本)
同样支持REGEXP_REPLACE函数,语法类似:
SELECT ID, REGEXP_REPLACE(VAL, '[^0-9;]', '') AS VAL FROM your_table;
PostgreSQL
需要在REGEXP_REPLACE中添加'g'参数指定全局替换:
SELECT ID, REGEXP_REPLACE(VAL, '[^0-9;]', '', 'g') AS VAL FROM your_table;
原理说明
正则表达式[^0-9;]表示匹配所有**不是数字(0-9)和分号(;)**的字符,将这些字符替换为空字符串后,就得到了仅保留目标字符的结果。
内容的提问来源于stack exchange,提问作者fbdev1907
相关产品推荐
相关产品推荐

