【问题标题】:MySQL - How to select data by string lengthMySQL - 如何按字符串长度选择数据
【发布时间】:2010-12-24 15:56:27
【问题描述】:
SELECT * FROM table ORDER BY string_length(column);

是否有一个 MySQL 函数可以做到这一点(当然不是 string_length)?

【问题讨论】:

标签: mysql select string-length


【解决方案1】:

您正在寻找CHAR_LENGTH() 来获取字符串中的字符数。

对于多字节字符集,LENGTH() 将为您提供字符串占用的字节数,而CHAR_LENGTH() 将返回字符数。

【讨论】:

  • 其实 CHAR_LENGTH() 应该是更好的选择。对于多字节字符集,LENGTH() 将为您提供字符串占用的字节数,而 CHAR_LENGTH() 将返回字符数。
  • CHAR_LENGTH发送整数参数是正确的,因为如果我返回字符数? , 由 CHAR_LENGTH(12) 返回 2
  • @fubo 在 mySQL 8.0 select LENGTH('Ö'); 结果是 1。与CHAR_LENGTH()OCTET_LENGTH() 相同
【解决方案2】:
SELECT * FROM table 
ORDER BY LENGTH(column);

LENGTH() 函数以及所有其他字符串函数的文档可在 here 获得。

【讨论】:

    【解决方案3】:

    查看MySQL documentation 的字符串函数,我们也可以使用CHAR_LENGTH()CHARACTER_LENGTH()

    【讨论】:

      【解决方案4】:

      我用来查找字符串长度的函数是length,使用如下:

      SELECT * FROM table ORDER BY length(column);
      

      【讨论】:

        【解决方案5】:

        在我的情况下,我使用以下查询使用长度大于 10 位的手机号码获取数据

        SELECT * FROM table_name WHERE CHAR_LENGTH(mobile) > 10;
        

        【讨论】:

          【解决方案6】:

          我用这句话过滤

          SELECT table.field1, table.field2 FROM table WHERE length(field) > 10;
          

          您可以将 10 更改为要过滤的其他数字。

          【讨论】:

            【解决方案7】:
            select * from *tablename* where 1 having length(*fieldname*)=*fieldlength*
            

            例如,如果您想从客户中选择名称短于 2 个字符的条目。

            select * from customer where 1 **having length(name)<2**
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-10-24
              • 1970-01-01
              • 2013-01-16
              • 2023-03-17
              • 1970-01-01
              • 2018-04-16
              相关资源
              最近更新 更多