2017-09-01 205 views
0

如果我需要在一列中替換"TOTA"中的所有提及,但不會使用以下概念?這看起來很簡單,但我發現所有的教程對於上週拿起SQL的人來說都不夠簡單。使用空值更新SQL中的列

Update Tablename 
set indcode =case when indcode in('TOTA', then 'blank' else 'leave it alone' End); 
+1

請標記RDBMS的版本使用的是..this也將工作..'update表集indcode ='tota'' – TheGameiswar

+0

或使用一個案例(例如:在這種情況下使用WHERE,因爲它更有意義):'set indcode = CASE WHEN indcode ='TOTA'THEN NULL ELSE indcode END' – JNevill

回答

1

你應該設置爲null分配空白值

Update Tablename 
set indcode = NULL 
where indcode ='TOTA'; 

,如果你需要一組值過濾器,你可以使用一個在使用,其中用於過濾行更新

條款如

Update Tablename 
set indcode = NULL 
where indcode in ('TOTA', '0', '000000'); 

或複雜的情況下,你可以使用的情況下,當..

Update Tablename 
set indcode = case when 'TOTA' then NULL 
        when '0' then '000000' 
        else indcode 
        END 
+0

如果我需要指令碼說「000000」而不是「0」,那麼如何指定? –

+1

在哪裏?你需要更新('TOTA','0','000000')中indcode的值嗎?如果這是你需要的答案已經更新 – scaisEdge

+0

我編輯了最後一個問題。我需要安頓一下。 –

1

您錯過了一個等號和一個圓括號,並且如您所寫,您將它更新爲字符串空白,而不是空字符串,最後,您需要決定是否要將其更新爲一個空的(零長度)字符串,或者一個名爲null的內置數據庫值,它在所有關係數據庫中表示該值是未知的或未指定的(與顯式地爲空或零長度的字符串相反) 。)

要更新爲空(零長度)串,寫」

Update Tablename 
     set indcode = case when indcode = 'TOTA' then '' 
         else indcode end; 

但你真的不需要更新的那些人呆着,所以只需添加一個過濾器(WHERE子句)與謂詞表達

Update Tablename 
     set indcode = '' 
    Where indcode = 'TOTA' 

如果你真的想將其更新爲空,而不是一個空字符串,則首先檢查並確保該列indCode被設置爲允許空值,並寫入:

Update Tablename 
     set indcode = Null 
    Where indcode = 'TOTA'