0

以下のようなセットを注文したいと思います。

  • 2
  • 1
  • b 9

通常の昇順とは異なります:

  • 1
  • 2
  • b 9

言い換えれば、いくつかのテキストを含む単一の列があり、最後に数字が含まれることもあります。最後に数値を持つすべてのフィールドを数値の降順で並べ替えたいのですが、先頭のテキストは昇順で並べ替える必要があります。

文字列の長さは 1 文字だけではなく長さも不明であり、数字も 1 文字の長さだけでなく長さも不明であり、文字列の末尾にあるとは限りません。 12回目」

「ランダムイベント、12回目」のような文字列がある場合、結果の「ランダムイベント、11回目」の前に表示したい。

これに対する答えを知っているSQL担当者がいることを願っています:)

4

2 に答える 2

1

注文する番号を分離する関数を作成できます。例えば。このようなもの(ここにあります MySQL strip non-numeric characters to compare

DROP FUNCTION IF EXISTS STRIP_NON_DIGIT;
DELIMITER $$
CREATE FUNCTION STRIP_NON_DIGIT(input VARCHAR(255))
   RETURNS INT
   DETERMINISTIC
BEGIN
   DECLARE output   VARCHAR(255) DEFAULT '';
   DECLARE iterator INT          DEFAULT 1;
   WHILE iterator < (LENGTH(input) + 1) DO
      IF SUBSTRING(input, iterator, 1) IN ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ) THEN
         SET output = CONCAT(output, SUBSTRING(input, iterator, 1));
      END IF;
      SET iterator = iterator + 1;
   END WHILE;
   RETURN output;
END
$$

次のようにSQLを実行します。

SELECT * FROM myTable order by myString, STRIP_NON_DIGIT(myString) DESC;

于 2012-10-12T14:10:35.780 に答える
-1
select * from table name where "your query " and  "  " order by asc;

または、降順で「dec」を使用する場合は、降順または昇順にする列を「」に入力します。

于 2012-10-11T12:14:15.213 に答える