【问题标题】:MySQL SELECT statement for the "length" of the field is greater than 1MySQL SELECT 语句中字段的“长度”大于 1
【发布时间】:2009-10-09 18:51:19
【问题描述】:

我的表中有一个 LINK 字段。有些行有链接,有些则没有。

我想选择所有存在 LINK 的行。 (长度大于 X 个字符)。

我该怎么写?

【问题讨论】:

  • 什么是 LINK 字段?你的意思是,某种名称为“LINK”的 text/varchar 字段?

标签: mysql


【解决方案1】:

怎么样:

SELECT * FROM sometable WHERE CHAR_LENGTH(LINK) > 1

这是MySql string functions page (5.0)。

注意我选择了CHAR_LENGTH而不是LENGTH,好像数据中有多字节字符你可能真的对有多少个字符感兴趣,而不是多少字节他们占用的存储空间。因此,对于上述情况,不会返回 LINK 是单个两字节字符的行 - 而使用 LENGTH 时会返回。

请注意,如果LINKNULL,则CHAR_LENGTH(LINK) 的结果也将是NULL,因此行将不匹配。

【讨论】:

    【解决方案2】:
    select * from [tbl] where [link] is not null and len([link]) > 1
    

    对于 MySQL 用户:

    LENGTH([link]) > 1
    

    【讨论】:

    • [identifier] 语法仅用于 MS SQL -- SQL Server 和 Access(据我所知)。这个问题是关于 MySQL 的。
    • 我不认为 len() 是一个有效的 MySql 函数
    • 哦,是的,我完全错过了问题的那一部分。我应该删除这个答案吗,因为它根本不相关?
    • 嗯,你的回答对我有帮助,因为我一直在寻找 T-SQL 版本,所以谢谢!
    • 您的回答对我也有帮助,因为我一直在寻找 MS SQL 版本。谢谢!
    【解决方案3】:

    以防万一有人想在 oracle 中找到方法并来到这里(比如我),语法是

    select length(FIELD) from TABLE
    

    以防万一;)

    【讨论】:

      【解决方案4】:

      试试:

      SELECT
          *
      FROM
          YourTable
      WHERE
          CHAR_LENGTH(Link) > x
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-12
        • 2021-02-28
        相关资源
        最近更新 更多