如何在 MYSQL 中按名称进行订单,就像在 Window 中使用订单名称一样

发布于 2024-09-28 04:33:25 字数 463 浏览 8 评论 0原文

桌子 带有行的图片具有名称

1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg,7.jpg,8.jpg,9.jpg,10.jpg,11.jpg
select * from Picture order by name

mysql 顺序: 1.jpg,10.jpg,11.jpg,2.jpg,3.jpg,......

问题:

我希望它对所有类型名称进行排序就像窗口 1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg,7.jpg,8.jpg,9.jpg,10.jpg,11.jpg

并且它必须适用于其他情况,

flower01.jpg,flower02.jpg,flower031.jpg,....,flower10.jpg

请帮助我

table
Picture with rows have name

1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg,7.jpg,8.jpg,9.jpg,10.jpg,11.jpg
select * from Picture order by name

mysql order : 1.jpg,10.jpg,11.jpg,2.jpg,3.jpg,......

Issue:

I want it sort all type name like as with Window 1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg,7.jpg,8.jpg,9.jpg,10.jpg,11.jpg

and it must working with other case as

flower01.jpg,flower02.jpg,flower031.jpg,....,flower10.jpg

please help me

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烂柯人 2024-10-05 04:33:25

你基本上有4个选择。

  1. 将名称更改为数字类型,并删除 .jpg(稍后在代码中添加)
  2. 添加“顺序”列并按该
  3. 列排序 在代码中排序,而不是在 SQL 中
  4. 使用强制转换“hacks”(例如 CAST (姓名未签名)

You basically have 4 choices.

  1. Change name to a numeric type, and remove the .jpg (adding it later in code)
  2. Add an 'order' column and sort by that
  3. Sort it in your code, not in SQL
  4. Use of the of the cast 'hacks' (e.g. CAST(NAME AS UNSIGNED)

一种黑客方法:

... ORDER BY CAST(name AS UNSIGNED);

编辑:另一种方法是:

 ... ORDER BY LPAD(name,N,'0');

其中N是列的最大宽度。
遗憾的是,据我所知,MySQL 本身并不支持自然排序。

A hackish way to do it:

... ORDER BY CAST(name AS UNSIGNED);

Edit: an alternative would be:

 ... ORDER BY LPAD(name,N,'0');

Where N is the maximum width of your column.
Sadly, MySQL doesn't support natural sorting natively AFAIK.

恋竹姑娘 2024-10-05 04:33:25

ODER BY name 看到 name 是一个字符串,并相应地逐个字符地对其进行排序。您必须让 MySQL 将名称解释为数值。一种方法可能是这样的:

select * from Picture order by name * 1;

ODER BY name sees that name is a string and sorts it accordingly,charater by character. You have to make MySQL interpret the name as numeric value. A way might be something like this:

select * from Picture order by name * 1;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文