UPDATE CM.CELL_SF_DW_NEW set TECHNOLOGY=
case when TECHNOLOGY= 'GSM' then '2G'
when TECHNOLOGY= 'TD' then '3G'
when TECHNOLOGY= 'LTE' then '4G'
when TECHNOLOGY= 'NR' then '5G'
when TECHNOLOGY= 'NB' then '5G'
else TECHNOLOGY
end;
这个要用到游标,你可以参考一下我写的这个:先获取到这个字段,然后再根据这个字段进行更新。里面的参数你用不到这me多,你看下我写的大概就知道思路了。
DECLARE @CardID NVARCHAR(32)
DECLARE @CustomerID NVARCHAR(32)
DECLARE @Gender NVARCHAR(32)
DECLARE @CustomerType NVARCHAR(32)
DECLARE @CardType NVARCHAR(32)
DECLARE @CertificateType NVARCHAR(32)
DECLARE @Sex INT
DECLARE Cursor_CarLess CURSOR FOR
(select CustomerID,CardID
FROM dbo.T_CustomerInfo WHERE ISNULL(CardID,'') <> '' AND CustomerType='个人' AND CertificateType='身份证' AND ISNULL(Gender,'') = '')--查询出需要的集合放到游标中
OPEN Cursor_CarLess
FETCH NEXT FROM Cursor_CarLess INTO @CustomerID,@CardID; --抓取下一行游标数据
WHILE @@FETCH_STATUS = 0
BEGIN
IF LEN(@CardID) = 18
BEGIN
SET @Sex = CASE WHEN PATINDEX('%[^0-9]%', SUBSTRING(@CardID,17,1)) = 0 THEN SUBSTRING(@CardID,17,1) ELSE NULL END
END
ELSE IF LEN(@CardID) = 15
BEGIN
SET @Sex = SUBSTRING(@CardID,15,1)
END
IF @Sex IS NOT NULL
BEGIN
IF @Sex%2=0
SET @Gender='女'
ELSE IF @Sex%2<>0
SET @Gender='男'
END
--UPDATE dbo.T_CustomerInfo SET Gender=@Gender where CustomerID=@CustomerID; --更新数据
PRINT @Gender+' '+@CustomerID;
FETCH NEXT FROM Cursor_CarLess INTO @CustomerID,@CardID;--抓取下一行游标数据
END
CLOSE Cursor_CarLess; --关闭游标
DEALLOCATE Cursor_CarLess; --释放游标
update CM.CELL_SF_DW_NEW set TECHNOLOGY = '4G' where TECHNOLOGY = 'LTE';
update CM.CELL_SF_DW_NEW set TECHNOLOGY = '5G' where TECHNOLOGY = 'NR';
update CM.CELL_SF_DW_NEW set TECHNOLOGY = '2G' where TECHNOLOGY = 'GSM';
update CM.CELL_SF_DW_NEW set TECHNOLOGY = '3G' where TECHNOLOGY = 'TD';