Нужна правильная команда sql для удаления где CHAR_LENGTH () больше чем - PullRequest
1 голос
/ 13 июля 2011

Мне нужна правильная команда SQL для удаления, где CHAR_LENGTH () больше, чем х количество, которое я пытался

TRUNCATE * FROM foo WHERE CHAR_LENGTH(foobar) > 100

(также пытался удалить *)

, что в соответствии с w3cshools является допустимым оператором, но он просто возвращается как ошибка:

> # 1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с ' ОТ foo WHERE CHAR_LENGTH (foobar)> 100' в строке 1 *

Примечание: Сообщение об ошибке фактически отображается> как ASCII "& gt;"(без пробелов и кавычек), не уверен, имеет ли это какое-либо отношение ...

Я также пытался:

SELECT * FROM foo WHERE CHAR_LENGTH(foobar) > 100

Просто чтобы посмотреть, будет ли это что-то делать, и он сделал то, что ожидалось, ипоказал все с charcount больше чем 100.

Как всегда, любая помощь приветствуется.

Ответы [ 2 ]

6 голосов
/ 13 июля 2011

Я думаю, что вы ищете операцию DELETE , а не TRUNCATE .

DELETE FROM foo WHERE CHAR_LENGTH(foobar) > 100;

TRUNCATE имеют следующий синтаксис:

TRUNCATE foo;

и полностью очищает стол. Вы не можете иметь предложение WHERE в TRUNCATE.

4 голосов
/ 13 июля 2011

Вы не можете использовать TRUNCATE TABLE с предложением where ( Ref .)

Используйте DELETE вместо:

DELETE FROM foo WHERE CHAR_LENGTH(foobar) > 100 
...