SQL Server 2005-向少于10个字符的记录添加区号
有人能想出一个SQL例程或想法,系统地将区号附加到SQL Server 2005数据库中没有区号的每个字段的开头吗 也许有人可以告诉我们如何只返回长度小于10个字符的行,以及如何将3位区号附加到每个字段字符串的开头 谢谢SQL Server 2005-向少于10个字符的记录添加区号,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,有人能想出一个SQL例程或想法,系统地将区号附加到SQL Server 2005数据库中没有区号的每个字段的开头吗 也许有人可以告诉我们如何只返回长度小于10个字符的行,以及如何将3位区号附加到每个字段字符串的开头 谢谢 DECLARE@AreaCode字符(3) DECLARE @AreaCode char(3) SET @AreaCode = 'XXX' UPDATE myTable SET myField = @AreaCode + myField WHERE LEN(myField)
DECLARE@AreaCode字符(3)
DECLARE @AreaCode char(3)
SET @AreaCode = 'XXX'
UPDATE myTable
SET myField = @AreaCode + myField
WHERE LEN(myField) < 10
AND myField NOT LIKE @AreaCode + '%'
设置@AreaCode='XXX'
更新myTable
设置myField=@AreaCode+myField
其中LEN(myField)<10
myField与@AreaCode+'%不同
这将适用于SQL Server。理想情况下,区号将是数据库中的一个单独的列。因为它不是这样设计的:
UPDATE
PhoneNumbers
SET
phone_number = '123' + phone_number
WHERE
LEN(phone_number) = 7
当然,如果人们已经格式化了电话号码,那么这就行不通了。我需要更多地了解您表中的数据。您可能需要执行以下操作:
UPDATE
PhoneNumbers
SET
phone_number = '(123) ' + phone_number
WHERE
LEN(REPLACE(REPLACE(REPLACE(REPLACE(phone_number, '-', ''), '(', ''), ')', ''), '.', '') = 7
如果人们输入像“ext.7”这样的东西,那会使事情更加复杂。看看为什么打出一个电话号码比只写一列更好?;) 我可能会添加一些东西,比如
。。。myField不像@AreaCode+“%”
尽管如此,本地交换不可能与区号相同吗?(我不相信有任何通用的验证可以阻止这种情况发生。)换句话说,如果数字已经小于10,即使前三位数字与@AreaCode匹配,它们也不一定是区号。你如何判断正确的区号呢?这两个都是很好的答案。非常感谢!