我有一个包含电话号码列的表格。对如何输入电话号码没有限制。目前电话号码格式如下

123-456-7890
(123)-456-7890
1234567890

我想更新表格并以 1​​23-456-7890 格式提供所有电话号码。我有超过 20k 条记录。我可以使用 SQL 查询来做到这一点,还是必须在 ASP 或 PHP 中使用正则表达式?

编辑:注意 最佳答案 是针对修改后的问题,电话号码 (123)-456-78790 更改为 (123)456-7890

最佳答案

如果它们严格采用这 3 种格式中的一种,则可以通过使用 SUBSTRING 并测试每个项目的 LEN 在 SQL 中轻松完成。

如果还有其他格式,我建议使用更擅长文本操作的语言(例如 .net)来执行此操作。

编辑添加:

鉴于您认为目前只有这 3 种格式,您可以这样做:

declare @t table (x varchar(20))
insert into @t
select '123-456-7890'
union select '(123)456-7890'
union select '1234567890'

select
    case
      when len(x) = 10 then
        substring(x, 1, 3) + '-' + substring(x, 4, 3) + '-' + substring(x, 7, 4)
      when len(x) = 13 then
        substring(x, 2, 3) + '-' + substring(x, 6, 8)
      else x
    end
from @t

关于asp.net - sql查询修复表中的电话号码问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6961048/

10-12 16:52