如何使用SQL Server将列或字符串中的数值替换为空白仅保留下划线
SQL Server 移除字符串中所有数字的实现方案
方案1:SQL Server 2017及以上版本(推荐)
使用TRANSLATE函数批量处理所有数字,代码简洁易维护:
-- 替换your_column为实际列名、your_table为实际表名 SELECT REPLACE( TRANSLATE(your_column, '0123456789', REPLICATE('~', 10)), '~', '') AS cleaned_column FROM your_table;
实现逻辑:
REPLICATE('~', 10)生成10个连续的~符号,和0-9的10个数字一一对应TRANSLATE遍历字符串,将所有0-9的数字全部替换为~- 外层
REPLACE把所有~统一替换为空,最终仅保留下划线等非数字内容
方案2:兼容全版本SQL Server
如果数据库版本低于2017,不支持TRANSLATE函数,可以嵌套10次REPLACE逐个移除数字:
SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( your_column, '0',''),'1',''),'2',''),'3',''),'4',''), '5',''),'6',''),'7',''),'8',''),'9','') AS cleaned_column FROM your_table;
效果验证
假设原字段值为2024_order_987_detail,执行上述查询后返回结果为_order__detail,完全符合清除数字、仅保留下划线及其他非数字内容的需求。如果你的需求是仅保留下划线、删除所有其他类型字符,直接在上述查询结果外层再加一层非下划线字符的替换逻辑即可。
内容的提问来源于stack exchange,提问作者deepak revanaki
相关产品推荐
相关产品推荐

