概要
文字列のカラムをちゃんと数字順でorder byするには、、、キャスト、、、?_(:3」∠)_
— mell (@mell_1022) May 5, 2020
C1
C10
C100
C12
C13
困っている人がいたので助けたいなと思いました。
テーブル
CREATE TABLE company (
company_code VARCHAR(255)
);
INSERT INTO company
VALUES
('C1')
, ('C10')
, ('C100')
, ('C12')
, ('C13')
;
並び替える
SELECT company_code FROM company ORDER BY company_code;
C1
C10
C100
C12
C13
普通に並び替えすると文字列として並び替えてしまいます。
数値として並び替える
SELECT company_code FROM company ORDER BY LENGTH(company_code), company_code;
C1
C10
C12
C13
C100
数値として並び替えてくれます。
LENGTH 関数を使って、まずは文字数で並び替えてあげると上手くいきます。