列名が「BatchNo」のテーブルがあり、文字列と数値の両方が一緒に含まれています。選択クエリを入力すると、次の結果が得られました。
「BatchNo」列を次の形式で並べ替えたい
私の問題では、将来のバッチには、数値を含むa、b、c....文字または数値のみが含まれる可能性があります。この列を並べ替えるにはどうすればよいですか?皆さんが私が解決策を得るのを手伝ってくれることを願っています。
列名が「BatchNo」のテーブルがあり、文字列と数値の両方が一緒に含まれています。選択クエリを入力すると、次の結果が得られました。
「BatchNo」列を次の形式で並べ替えたい
私の問題では、将来のバッチには、数値を含むa、b、c....文字または数値のみが含まれる可能性があります。この列を並べ替えるにはどうすればよいですか?皆さんが私が解決策を得るのを手伝ってくれることを願っています。
テーブルのスキーマをに変更してみませんか?
CREATE TABLE tableName
(
ShipmentNo INT,
ProjectCode VARCHAR(50),
BatchNo INT,
SubBatch INT,
.....
)
このように、それはあなたが望むようにvalkuesを分類することです。
フォローアップの質問は、BatchNo
からの単一の文字値のみを持っていますA-Z
、例えば
11a
11b
ではなく
11aa
更新1
SELECT *
FROM tableName
ORDER BY CASE ISNUMERIC(batchNo)
WHEN 1 THEN batchNo
ELSE CAST(LEFT(batchNo, LEN(batchNo) - 1) AS INT)
END
これを試して:
SELECT *
FROM tableName
ORDER BY
CAST(LEFT(BatchNo, PATINDEX('%[^0-9]%', BatchNo + 'Z')-1) AS INT),
BatchNo
これはどう:
SELECT *
FROM TABLE_NAME
ORDER BY CAST(LEFT(BatchNo, PATINDEX('%[^0-9]%', BatchNo + 'A')-1) AS INT)
クエリは、数値で始まる文字列に対してのみ機能します。