0

並べ替える必要がある列があり、アルファベットと数字が含まれています

今、次の値

ABC223 ABC12

ここで、文字列内のアルファベット文字を無視して、数字のみでこれをソートする必要があります。

覚えておくべきことは、値が GD で始まる場合もあれば、A のみで始まる場合もある 123AB et

これはまったく可能ですか?

4

3 に答える 3

2

次のようなことができます。

ORDER BY SUBSTRING(YourColumn, 3)
于 2012-10-24T13:10:26.200 に答える
1

https://launchpad.net/mysql-udf-regexpMySQLで正規表現を置き換える方法をご覧ください。

If you use udf you can execute an ORDER BY with a regex replace.

于 2012-10-24T13:20:51.960 に答える
0

uasortその値を含む配列のソートに使用できます。

例えば:

$pattern = "/\d+/";
$values = array('ABC123', 'ABC12', 'GD44'); //Just for example

uasort($values, function ($a, $b) use ($pattern)
   {
       $matches = array();
       preg_match($pattern, $a, $matches);
       $a = $matches[0];
       preg_match($pattern, $b, $matches);
       $b = $matches[0];

       return $a - $b;
   });

var_dump($values);

また、SQLクエリを使用udfした操作にも使用できます。regex

于 2012-10-24T13:23:22.597 に答える