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; --释放游标
请忽略注释,不注释也是无法更新。