2010-06-11 62 views
2

我有具有以下列的表:SQL Server的性別互換查詢

ID, Name, Designation, Salary, Contact, Address, Gender 

不留神所有男性我已經進入「女」,同樣爲所有女性的性別我已經進入了「男」。例如

0023 Scott Developer 15000 4569865 Cliff_Eddington,USA Female 

我上面的行應該是男性而不是女性。還有所有的性別被更新爲女性的男性。所有女性性別的相同情況已更新爲男性。

是否有任何單一的查詢,通過它我可以更改所有行的性別是男性將其更改爲女性和所有行的性別爲女性將其更改爲男性。

回答

2

我會運行一個SELECT COUNT(*)前運行更新,以便獲得正確的結果,然後交易:

BEGIN TRANSACTION 

UPDATE tableA 
    SET Gender = CASE 
       WHEN Gender = 'Male' THEN 'Female' 
       ELSE 'Male' 
       END 

--COMMIT TRANSACTION 
--ROLLBACK TRANSACTION 
6

這應該這樣做

UPDATE tbl SET Gender = (CASE WHEN Gender = 'Male' THEN 'Female' ELSE 'Male' END) 

(對不起,是MySQL的語法,固定爲MS-SQL)

+0

sqlserver中沒有反引號 – devio 2010-06-11 09:11:10

3

你可以嘗試像

UPDATE TABLE 
SET Gendeer = CASE 
        WHEN Gender = 'Male' 
         THEN 'Female' 
        ELSE 'Male' 
       END 
0

1)第一種方法

Update <i>Table_Name</i><br/> 
Set <i>Column_Name</i> = Case <i>Column_Name</i> <br/> When 'M' then 'F'<br/> When 'F' then 'M'<br/> End 

2)第二種方法

Update <i>Table_Name</i><br/> 
Set <i>Column_Name</i> = IF('M','F','M') 
  • 不漂亮很多不確定2),但1)的作品。
0

這是正確的。

UPDATE dbo.EmpGender 
    SET Gender = (CASE 
     WHEN Gender = 'MALE' THEN 'FEMALE' ELSE 'MALE' 
    END) 

IF YOU DONT WANT TO USE CASE STATEMENT THEN. 



UPDATE dbo.EmpGender 
SET Gender = REPLACE(('fe'+Gender),'fefe','') 

IN SQL 2012 YOU CAN USE 
UPDATE dbo.EmpGender 
SET Gender = IIF(Gender = 'male', 'female', 'male') 
0

UPDATE GENDER(TABLE NAME) SET GENDER(列名)= CASE WHEN GENDER(COLUMNNAME)= '男性' THEN '女性' ELSE 'MALE' END;

這裏我的表名和列名是相同的,所以它在括號中明確指定。