请问一下,我想批量更新一个字段里面的内容,改成我标注的这样,如图,sql应该怎么写

img

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';