MYSQL订单由REGEX

问题描述 投票:-1回答:1

我需要通过一个字段进行搜索和 "排序",这个字段的内容是这样的。

32:string1,24:string2,101:string3,1033:string4

对子用逗号分隔,然后。

sortOrder:string

当我知道 "字符串 "时,我想用它前面的数字来 "排序"(就在冒号之前).而且,用它作为数字而不是字符串来排序。

也就是说,如果我有 "string2",我想用24作为 "顺序"。数目.

用mysqli可以吗?如果可以,能举个例子吗?

如果mysqli做不到,是不是应该先得到结果再重新排序(用的是php).如果是这样,你能提供一个解决方案吗?

*这可能有一个问题,就是字段是文本。如果按文本排序,那么我得到的顺序是1,100,111,2,200,5(不想要)而不是1,2,5,100,111,200(首选).唉。

mysql regex sql-order-by
1个回答
0
投票

你可以使用 substring_index(). 这是一个有点棘手的,但鉴于你的样本数据。

order by substring_index(substring_index(col, @string, -1), ',', -1) + 0

请注意,前面是... +字符串中会有冒号--如 '24:'. 但MySQL使用沉默转换处理。

© www.soinside.com 2019 - 2024. All rights reserved.