MySQL - 如何通过字符串长度选择数据

358
SELECT * FROM table ORDER BY string_length(column);

是否有MySQL函数可以实现这个功能(当然是代替 string_length)?


可能是重复问题 - https://dev59.com/o3I-5IYBdhLWcg3wq6Zo - Payel Senapati
7个回答

573
您正在寻找用于获取字符串中字符数量的 CHAR_LENGTH() 函数。
对于多字节字符集,LENGTH() 函数将会给出字符串所占据的字节数量,而 CHAR_LENGTH() 函数则会返回字符串中包含的字符数量。

152
实际上,CHAR_LENGTH() 应该是更好的选择。对于多字节字符集,LENGTH() 将给出字符串占用的字节数,而 CHAR_LENGTH() 将返回字符数。 - András Szepesházi
将整数参数发送到CHAR_LENGTH是正确的,因为如果我返回字符数?例如,CHAR_LENGTH(12)返回2 - DarkFenix
在MySQL 8.0中,select LENGTH('Ö');的结果是1。使用CHAR_LENGTH()OCTET_LENGTH()也是一样的。 - Sathvik

99
SELECT * FROM table 
ORDER BY LENGTH(column);

可以在这里找到有关LENGTH()函数以及其他所有字符串函数的文档。


32

查看MySQL文档中关于字符串函数的内容,我们也可以使用CHAR_LENGTH()CHARACTER_LENGTH()


18
在我的情况下,我使用以下查询方式获取长度大于10位的移动电话号码的数据。
SELECT * FROM table_name WHERE CHAR_LENGTH(mobile) > 10;

5

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

SELECT * FROM table ORDER BY length(column);

4
我使用这个句子进行过滤。
SELECT table.field1, table.field2 FROM table WHERE length(field) > 10;

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


-2
select * from *tablename* where 1 having length(*fieldname*)=*fieldlength*

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接