首页 > 解决方案 > 过滤掉相似的值字符串sql

问题描述

以下是我的数据在我的数据库中的一个表中的显示方式

ID 第 1 列
1 1234-6+1
2 123461
3 023-FD-0
4 023FD0
5 5FD23FO
6 5FD+23F+O
7 12334

如何在我的选择语句中实现以下目标。

ID 第 1 列 第 2 列
1 123461 1234-6+1
2 023FD0 023-FD-0
3 5FD23FO 5FD+23F+O

曾尝试使用正则表达式,但徒劳无功。样本选择查询将不胜感激。

标签: sqlpostgresql

解决方案


如果您只想替换字符“-”和“+”,则可以使用两次替换功能。使用简单的正则表达式来识别要处理的行:

with test(id, column1) as 
     (values (1, '1234-6+1')
           , (2, '123461')
           , (3, '023-fd-0')
           , (4, '023fd0')
           , (5, '5fd23fo')
           , (6, '5fd+23f+o')
           , (7, '12334')
      )
select id
     , replace(replace(column1,'-',''),'+','') as column1
     , column1 as column2
  from test 
 where column1 ~ '(-|\+)';

推荐阅读