日期:2014-05-16  浏览次数:20635 次

一个非常简单的UDATE问题!!!!
小弟出学SQL  server  需要对SQL server中的一个表的字段进行模糊处理,字段名为C_phone,类型是varchar,大约有20W行数据。这个字段存储的是手机号码,没有重复项。现在需要对这些号码进行模糊处理具体值  举例   8613012345678。变为 A12345678.    我的思路是将所有的号码的前5位进行字母编码,全国一共只有22个号段,例如 : 130  对应   A   131 对应 B ....


这个需要写一个选择判断语句 ,但不知道怎么写。

我写了一个只能将一条数据模糊化的SQL语言,一旦数据变为2条或以上就会说IF语句有问题!!!


use  GOC_01
if (LEFT((select c_phone from ceshi_3 ),5)='86130')
update ceshi_3 set c_phone=(char(65)+right(c_phone,8));



其效果是   将  8613012345678 变为A12345678,但多行如何处理????
------解决方案--------------------
引用:
自己顶一顶!!!


呵呵,可以这样,就是的写很多代码:
update ceshi_3 
set c_phone=case when left(c_phone,5)='86130' then char(65)+right(c_phone,8)
                 when left(c_phone,5)='86131' then char(66)+right(c_phone,8)
     ...
end