字段 比较 结果 写入 同行其他字段
tab1a1 a2 a3 1 23 2 633 434 535 666 67
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')BEGIN DROP TABLE tbaENDGOCREATE TABLE tba( a1 INT, a2 INT, a3 INT) GOINSERT INTO tba SELECT 1,23,0 UNION SELECT 2,63,0 UNIONSELECT 3,43,0 UNIONSELECT 4,53,0 UNIONSELECT 5,66,0 UNIONSELECT 6,67,0GOUPDATE tba SET a3 = CASE WHEN CHARINDEX('3',LTRIM(a2)) > 0 THEN 1 ELSE 0 END + CASE WHEN CHARINDEX('6',LTRIM(a2)) > 0 THEN 1 ELSE 0 END SELECT * FROM tbaa1 a2 a31 23 12 63 23 43 14 53 15 66 16 67 1
[解决办法]
USE tempdb;GOIF OBJECT_ID('testtb') IS NOT NULL DROP TABLE testtb;GOCREATE TABLE testtb(a1 INT IDENTITY(1,1), a2 INT NULL , a3 INT NULL );GOINSERT INTO testtb VALUES(23,NULL);INSERT INTO testtb VALUES(63,NULL);INSERT INTO testtb VALUES(43,NULL);INSERT INTO testtb VALUES(53,NULL);INSERT INTO testtb VALUES(66,NULL);INSERT INTO testtb VALUES(67,NULL);GOUPDATE dbo.testtb SET a3=(CASE WHEN PATINDEX('%3%',CAST(a2 AS CHAR(4)))<>0 THEN 1 ELSE 0 END)+ (CASE WHEN PATINDEX('%6%',CAST (a2 AS CHAR(4)))<>0 THEN 1 ELSE 0 END ); SELECT * FROM dbo.testtb;/*--结果a1 a2 a31 23 12 63 23 43 14 53 15 66 16 67 1*/