首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL + PHP组合字符串顺序

MySQL + PHP组合字符串顺序
EN

Stack Overflow用户
提问于 2016-09-17 09:22:21
回答 2查看 55关注 0票数 1

我正在为我的女朋友们开发一个代金券插件。凭证id (vid)看起来像2016-1,第一部分是本年度,第二部分是当前凭证id。

我现在的问题是订购vids / DESC。

现在的产出是:

代码语言:javascript
复制
- 2016-1 
- 2016-10
- 2016-11
- 2016-12 
- 2016-13
- 2016-2
- 2016-20
- 2016-21
- etc.

但应该是:

代码语言:javascript
复制
- 2016-1 
- 2016-2
- 2016-..
- 2016-9 
- 2016-10
- 2016-11
- 2016-..
- 2016-19
- 2016-20
- 2016-21
- 2016-..

我认为选角是没有选择的,因为"-“。

希望有人能帮我!

问候

M.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-17 09:24:49

如果您的所有数据都是这种格式(xxxx-yy),那么您可以尝试以下order子句:

代码语言:javascript
复制
ORDER BY SUBSTRING_INDEX(your_column,'-',1)+0,
SUBSTRING_INDEX(your_column,'-',-1)+0

Demonstration:

代码语言:javascript
复制
SET @str := '2016-01';

SELECT 
SUBSTRING_INDEX(@str,'-',1)+0 AS firstPart,
SUBSTRING_INDEX(@str,'-',-1)+0 AS secondPart;

输出:

代码语言:javascript
复制
firstPart   secondPart
  2016          1

注:

第一个substring_index函数在连字符之前抓取文本,第二个substring_index函数在连字符之后抓取文本。

稍后,将0添加到它中,将其转换为一个数字。

More:,您也可以使用CAST函数,如下所示:

代码语言:javascript
复制
ORDER BY
CAST(SUBSTRING_INDEX(your_column,'-',1)) AS UNSIGNED) ,
CAST(SUBSTRING_INDEX(your_column,'-',-1)) AS UNSIGNED) 
票数 3
EN

Stack Overflow用户

发布于 2016-09-17 09:24:37

你应该像voucherid - year那样以相反的方式去做。那么订单就能工作了。

或者,如果你想保持原样,就试试这样的方法

代码语言:javascript
复制
ORDER BY
    CAST(SUBSTRING(voucher, 5) AS INT) DESC

其中1,5是"2016-“,所以它的订单,无论是什么后:凭单身份证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39545104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档