2011-12-28 81 views
1

我有一张桌子上充满了联系人信息,我想将电话号码从5555555555更改为(555)555-5555,而不是。格式化现有的SQL数据?

我发现了一些东西在网上选择数据,并让它在格式返回,但没有办法实际更新记录,以使用新的格式。这甚至有可能吗?

+0

就像一次性更新所有记录一样?记录的子集(也许您已经开始以所需的格式插入新的记录)?你是否想改变记录的插入方式?目前尚不清楚您的数据清理策略在这里。 – David 2011-12-28 15:53:24

回答

2
update YourTable 
set PhoneNumber = 
    '(' + LEFT(PhoneNumber, 3) + 
    ') ' + SUBSTRING(PhoneNumber, 3, 3) + 
    '-' + RIGHT(PhoneNumber, 4) 

这将按照您指定的正确格式更新您的数据。这与SQL Server一起工作,但我不能说任何其他RDBMS。

+0

完美!非常感谢你。我试图根据其他资源的推荐使用CONCAT,但SSMS不喜欢它。这完美地工作。 – user1096207 2011-12-28 16:45:08

4

在db中这样做是不好的做法。好的做法是将原始数据存储在数据库中,并在选择时格式化,甚至更好 - 将数据显示给用户时。

+0

原始数据,当然,我同意。它应该是......原始的。但我认为同一张表中的持久计算列是一个好主意。它会保存应用程序检索时间来格式化电话号码。 – 2011-12-28 16:04:41

+0

我可以看到你的观点,只不过我们是从一个Access数据库转移到我的雇主购买的一些SQL平台上,而我的老板想要将这些电话号码和电子邮件地址进行相应的格式化以便传输。 感谢您的信息,但。 – user1096207 2011-12-28 16:10:22

0

如果你想要将旧的数据格式转移到新的一个只是让循环,读取小区将其更改为您喜欢的格式,并将其存回电池。

string NewString; 
NewString = "(" + TheOriginalString.Substring(0,3) + ") "; 
NewString += TheOriginalString.Substring(3,3) + "-"; 
NewString += TheOriginalString.Substring(6); 

然后只是将新字符串存储在同一个单元格中。
示例代码使用C#。