2015-08-28 22 views
2

我在MySQL數據庫中有一個標題爲'user'的表格。查詢在MySQL數據庫的列上設置'NOT NULL'的屬性應該是什麼?

它有一個標題爲'full_name'(varchar(255))的字段。我想爲此列設置'NOT NULL'屬性,並使用值'Dummy User'更新列,其中'full_name'列包含空白值。

所以我的問題是我應該如何在單個更新查詢中實現這兩件事?

我嘗試的查詢是下面,但它給了我錯誤:

ALTER TABLE `user` MODIFY COLUMN full_name NOT NULL DEFAULT 'Dummy User' WHERE full_name = ''; 

請有人幫助我。

+0

只是爲了確認,當你說*「列包含空白值」*時,你的意思是空白,還是你的意思是空?此外,這必須是單個查詢的任何理由? – GarethD

+0

@GarethD:當我說「列包含空白值」時,我的意思是空白和'NOT NULL'。你可以給兩個查詢,沒有問題。 – user2839497

+0

認爲沒有辦法。請參閱alter table語法:https://dev.mysql.com/doc/refman/5.0/en/alter-table.html – Jens

回答

1

作爲稀有@jens在他的評論中指出,有沒有辦法改變full_name列的類型NOT NULL也替換爲默認值的空字符串在一個單一的查詢。

下面的第一個查詢將full_name列的類型更改爲NOT NULL,並將默認列值設置爲Dummy User。它將取代所有已有的NULL條目與您想要的默認值。我們已經完成了一半。爲了覆蓋空字符串的記錄,我使用了一條簡單的UPDATE聲明。

ALTER TABLE users 
MODIFY COLUMN full_name VARCHAR(255) NOT NULL DEFAULT 'Dummy User'; 

UPDATE users 
SET full_name = 'Dummy User' 
WHERE full_name = '' 
+0

難道你不認爲應該在哪裏條件只更新那些full_name字段包含空值的記錄嗎? – user2839497

+0

我試過這個查詢,但它給了我錯誤: ALTER TABLE'user' MODIFY COLUMN full_name NOT NULL DEFAULT'Dummy User'WHERE full_name =''; – user2839497

+0

您確定在'full_name'列中有空白值,而不僅僅是空值嗎? –

相關問題