【问题标题】:Need correct sql command to delete where CHAR_LENGTH() more than需要正确的 sql 命令来删除 CHAR_LENGTH() 超过
【发布时间】:2011-07-13 09:07:54
【问题描述】:

我需要正确的 SQL 命令来删除我尝试过的 CHAR_LENGTH() 超过 x 数量的地方

TRUNCATE * FROM foo WHERE CHAR_LENGTH(foobar) > 100

(也试过DELETE *)

根据w3cshools,它是一个有效的运算符,但它只是作为错误返回:

> #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ' FROM foo WHERE CHAR_LENGTH(foobar) > 100' 附近使用正确的语法*

注意:错误信息实际上显示>为ASCII“>” (没有空格或引号)不确定这是否有任何相关性......

我也试过了:

SELECT * FROM foo WHERE CHAR_LENGTH(foobar) > 100

只是想看看这是否会做任何事情,它是否符合预期并显示所有字符数大于 100。

一如既往地感谢任何帮助。

【问题讨论】:

    标签: sql truncate sql-delete


    【解决方案1】:

    我认为您正在寻找 DELETE 操作,而不是 TRUNCATE

    DELETE FROM foo WHERE CHAR_LENGTH(foobar) > 100;
    

    TRUNCATE 有这样的语法:

    TRUNCATE foo;
    

    并完全清空桌子。 TRUNCATE 上不能有 WHERE 子句。

    【讨论】:

    • 抱歉,在您发帖时编辑了原始帖子,是的,我尝试了 DELETE,但得到了同样的错误,但是当我使用 SELECT 时,它完成了它的工作。
    • 请注意,DELETE 不包含列列表,因此您需要删除 *(我在原始帖子中错过了它,但现在已经对其进行了编辑)。
    【解决方案2】:

    您不能将 TRUNCATE TABLE 与 where 子句一起使用 (Ref。)

    改用DELETE

    DELETE FROM foo WHERE CHAR_LENGTH(foobar) > 100 
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      相关资源
      最近更新 更多