如何在 SQL 中按行格式/正则表达式分组?

Iva*_*nko 1 sql sql-server

假设我有不同格式的电话号码作为字符串存储在数据库中:

Phone
(812) 283-2013
701 857 7000
207-623-0389
5592369797
...
Run Code Online (Sandbox Code Playgroud)

是否可以列出我拥有的每种格式的示例,以便我知道存在哪些格式?

我正在使用 SQL Server,但我对总体思路感兴趣,因此任何其他关系数据库的方法都很好。

Joh*_*tti 6

如果我理解正确的话,您正在寻找不同模式的电话号码。如果是这样,translate()将是一个不错的选择

Declare @YourTable Table ([Phone] varchar(50))  Insert Into @YourTable Values 
 ('(812) 283-2013')
,('701 857 7000')
,('207-623-0389')
,('5592369797')
 

Select distinct Frmat = translate(Phone,'0123456789','##########') 
 from @YourTable
Run Code Online (Sandbox Code Playgroud)

结果

Frmat
### ### ####
##########
###-###-####
(###) ###-####
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案非常好。如果不支持“translate”,则可以使用嵌套的“replace”。总体思路是一样的 (3认同)
  • 正是我的想法,但还不想做出猜测。:) (2认同)