按名称订购我正在使用'order by name
'
但名称包含双冒号:'::'
如何按双冒号之后的文字订购?
所以:
aaaa::bbbb
aaaa::aaaa
aaaa::1234
aaaa::a1234
将被命令:
aaaa::1234
aaaa::aaaa
aaaa::a1234
aaaa::bbbb
答案 0 :(得分:2)
答案 1 :(得分:0)
您必须在MySQL中创建一个新字段,然后将文本的第二部分插入其中。排序依据使用各种索引和算法(例如分而治之)。
因此它无法对特定字符串的特定部分进行排序,如果你设法“伪造”一种方法,那么由于缺乏性能,性能会非常糟糕索引
对不起,我意识到这可能不是你想要的答案,但我担心最好的方法是稍微长一点的方式,但至少你可以在快速点亮的情况下这样做,如果你添加一个索引它:)。
答案 2 :(得分:0)
您必须将文本拆分为两列,然后按后者排序。您可以拆分和连接应用程序代码中的列,也可以使用视图和存储过程使其看起来像数据库客户端的一列。
答案 3 :(得分:0)
您可以尝试以下方法
在::
之后获取所有数据为Alphabet的记录UNION
获取所有记录,其中所有数据均为::
答案 4 :(得分:0)
关于你的排序,根据ascii值数字在字母表之前排在第一位, 所以aaaa:1234应该是第一个
您可以检索值并在PHP中排序
<?php
$arr = array("aaaa::bbbb","aaaa::aaaa","aaaa::1234","aaaa::a1234");
$sec=$arr;
natsort($sec);
print_r ($sec);
?>