表中的当前数据如下所示
XBX/124/18 XX/10/18 XMX/12/18 XX/8/18 XX/123/18 XXX/88/18 XX/68/18 XX/145/18 YYY/5/18
我需要的数据应该是这种格式
XBX/5/18 XX/8/18 XMX/10/18 XX/12/18 XX/68/18 XXX/88/18 XX/123/18 XX/124/18 YYY/145/18
我该怎么做??
wvt8vs2t1#
按上述方式订购按转换顺序(子字符串索引(子字符串索引(fieldname,“/”,2),“/”,-1),无符号整数)它将返回整数形式的中间值,然后我们可以对其排序
cyvaqqii2#
只需从表中获取作为数组的数据,并使用php执行以下步骤对它们进行排序。
<?php $arr = ['XBX/124/18', 'XX/10/18', 'XMX/12/18', 'XX/8/18', 'XX/123/18', 'XXX/88/18', 'XX/68/18', 'XX/145/18', 'YYY/5/18']; foreach ($arr as $str){ $matches = substr($str, strpos($str, "/") + 1).'<br>'; $variable[] = substr($matches, 0, strpos($matches, "/")); } natsort($variable); $variable_keys = array_keys($variable); $ordered_array = array_replace(array_flip($variable_keys), $arr); $ordered_array = array_values($ordered_array); print_r($ordered_array); ?>
q35jwt9p3#
我希望它能帮助你我假设col2是你的字符串数据就像“xbx/5/18”
SELECT col1, col2, col3 FROM table1 ORDER BY SUBSTRING_INDEX(SUBSTRING_INDEX(col2, "/", 2),"/",-1);
这条线将帮助你得到中间号码。
SUBSTRING_INDEX(SUBSTRING_INDEX("XBX/5/18", "/", 2),"/",-1);
czfnxgou4#
一个查询解决方案是一个很好的方法,如果你能弄清楚怎么做的话,它可能是首选的方法。然而,没有更多的信息,这里是一个php解决方案,它将给你想要的结果。此解决方案考虑“/”或“-”,并将保留排序数组中的“/”或“-”。虽然很难看,但很管用。
$data = array( 'XBX/124/18', 'XX/10/18', 'XMX/12/18', 'XX/8/18', 'XX-123-18', 'XXX/88/18', 'XX-68-18', 'XX-145-18', 'YYY/5/18' ); for($i = 0; $i < count($data); $i++){ if(preg_match('/\//', $data[$i])){ $data[$i] = preg_replace('/\//', ' ', $data[$i]); $parsed[$i] = explode(' ', $data[$i]); $parsed[$i][3] = '/'; }elseif(preg_match('/-/', $data[$i])){ $data[$i] = preg_replace('/-/', ' ', $data[$i]); $parsed[$i] = explode(' ', $data[$i]); $parsed[$i][3] = '-'; } } $temp = $parsed; usort($parsed, function($a, $b){ //Will sort by middle and right values. if([$a[1], $a[2]] > [$b[1], $b[2]]){ return 1; }elseif([$a[1], $a[2]] < [$b[1], $b[2]]){ return -1; }else{ return 0; } }); for($i = 0; $i < count($parsed); $i++){ $sorted[] = $temp[$i][0] . $parsed[$i][3] . $parsed[$i][1] . $parsed[$i][3] . $parsed[$i][2]; } echo '<pre>'; print_r($sorted); echo '</pre>';
这将输出:
Array ( [0] => XBX/5/18 [1] => XX/8/18 [2] => XMX/10/18 [3] => XX/12/18 [4] => XX-68-18 [5] => XXX/88/18 [6] => XX-123-18 [7] => XX/124/18 [8] => YYY-145-18 )
4条答案
按热度按时间wvt8vs2t1#
按上述方式订购
按转换顺序(子字符串索引(子字符串索引(fieldname,“/”,2),“/”,-1),无符号整数)
它将返回整数形式的中间值,然后我们可以对其排序
cyvaqqii2#
只需从表中获取作为数组的数据,并使用php执行以下步骤对它们进行排序。
q35jwt9p3#
我希望它能帮助你我假设col2是你的字符串数据就像“xbx/5/18”
这条线将帮助你得到中间号码。
czfnxgou4#
一个查询解决方案是一个很好的方法,如果你能弄清楚怎么做的话,它可能是首选的方法。然而,没有更多的信息,这里是一个php解决方案,它将给你想要的结果。
此解决方案考虑“/”或“-”,并将保留排序数组中的“/”或“-”。虽然很难看,但很管用。
这将输出: