2011-07-13 20 views
1

我需要正確的SQL命令刪除其中CHAR_LENGTH()比X金額我想需要正確的SQL命令刪除其中CHAR_LENGTH()超過

TRUNCATE * FROM foo WHERE CHAR_LENGTH(foobar) > 100 

(也嘗試刪除*)

根據w3cshools是一個有效的操作符,但它只是作爲錯誤返回:

>#1064 - 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「 FROM foo其中CHAR_LENGTH(foobar的)> 100」位於第1行*

注:錯誤消息實際上表明>作爲ASCII「& gt;」 (無空格或引號)不知道這有什麼意義?

我也試過:

SELECT * FROM foo WHERE CHAR_LENGTH(foobar) > 100 

只是爲了看看是否能夠做任何事情,它沒有什麼預期,並用顯示全部charcount大於100.

與往常一樣,任何幫助表示讚賞。

回答

6

我認爲您正在尋找DELETE操作,而不是TRUNCATE

DELETE FROM foo WHERE CHAR_LENGTH(foobar) > 100; 

TRUNCATE有這樣的語法:

TRUNCATE foo; 

完全清空表。在TRUNCATE上不能有WHERE子句。

+0

對不起編輯原來的職位,你在那裏發帖,是的,我試着刪除,但得到同樣的錯誤,但當我使用SELECT時,它完成了它的工作。 – Dizzi

+2

請注意,DELETE不需要列列表,所以你需要刪除'*'(我錯過了在我原來的文章,但已編輯它,以適應現在)。 –

4

你不能用一個where子句中使用TRUNCATE TABLE

使用DELETE代替(Ref):

DELETE FROM foo WHERE CHAR_LENGTH(foobar) > 100