我需要通过一个字段进行搜索和 "排序",这个字段的内容是这样的。
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(首选).唉。
你可以使用 substring_index()
. 这是一个有点棘手的,但鉴于你的样本数据。
order by substring_index(substring_index(col, @string, -1), ',', -1) + 0
请注意,前面是... +
字符串中会有冒号--如 '24:'
. 但MySQL使用沉默转换处理。