sql - 如何从 SQL Server 中的 varchar 列中提取电话号码?

标签 sql sql-server

我的表格中有一个 varchar 列,其中可以包含不同格式的电话号码以及其中的一些文本。

示例:

"This is a test 111-222-3344"  
"Some Sample Text (111)-222-3344"  
"Hello there 1112223344 . How are you?"

如何从中提取电话号码?我查找了其他解决方案( Another Post ),但它们不符合我的要求。

谢谢

最佳答案

好吧,由于它们的格式不同,我会以相同的格式提取它们。

--Handles parentheses, commas, spaces, hyphens..
declare @table table (c varchar(256))
insert into @table
values
('This is a test 111-222-3344'),
('Some Sample Text (111)-222-3344'),
('Hello there 111222 3344 / How are you?'),
('Hello there 111 222 3344 ? How are you?'),
('Hello there 111 222 3344. How are you?')

select
replace(LEFT(SUBSTRING(replace(replace(replace(replace(replace(c,'(',''),')',''),'-',''),' ',''),',',''), PATINDEX('%[0-9.-]%', replace(replace(replace(replace(replace(c,'(',''),')',''),'-',''),' ',''),',','')), 8000),
           PATINDEX('%[^0-9.-]%', SUBSTRING(replace(replace(replace(replace(replace(c,'(',''),')',''),'-',''),' ',''),',',''), PATINDEX('%[0-9.-]%', replace(replace(replace(replace(replace(c,'(',''),')',''),'-',''),' ',''),',','')), 8000) + 'X') -1),'.','')
from @table

Partial Credit

关于sql - 如何从 SQL Server 中的 varchar 列中提取电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45355290/

相关文章:

sql-server - SQL Server 过程设计可在一次调用中获取结果和结果计数

php - 想要按类型转换排序但按值(value)排序

sql - 将函数返回的记录拆分为多列

c# - 选择 List<int> 中所有值的位置

sql - Hive 托管表与外部表的更新和插入

mysql - 如何选择sql中除一列以外的所有列?

sql-server - Microsoft SQL Server 仅需要查询中的最高结果

SQL Server 2019 安装失败

java - 使用 PostgreSQL 和 SQL Server hibernate UUID

c# - asp.net中带有时间戳和类型化数据集的乐观并发