SQL에서 Excel의 셀 위치와 같은 값을 정렬하는 방법
하고 싶은 일
Excel의 셀 위치 같은 값이란 A1
라든지 BA25
같은 사람입니다.
"A >...> Z > AA""1 >...> 9 > 10 > 11"으로 정렬하고 싶습니다.
「A > AA > B > BB」라든가 「1 > 11 > 2 > 21」같이 늘어놓고 싶지 않습니다.
이런 식으로 하고 싶지 않아SQL> select * from cell_info order by cell;
CELL CONTENTS
------------ ------------------------------------
A1 peach
A11 mandarin --> 「1」の次は「11」じゃなくて「2」がいい
A2 pumpkin
A25 plum
AA1 cherry --> 「A」の次は「AA」じゃなくて「B」がいい
AA11 pomegranate
AA2 loquat
AA25 kumquat
AC1 turnip
AC11 banana
AC2 grape
AC25 melon
B1 apple
B11 orange
B2 persimmon
B25 strawberry
16行が選択されました。
Excel의 셀 위치와 같은 값을 정렬하는 방법
결론-- 列を第1キーにする場合
SQL> select * from cell_info order by length(regexp_substr(cell,'[A-Z]+')),regexp_substr(cell,'[A-Z]+'),to_number(regexp_substr(cell,'[0-9]+'));
CELL CONTENTS
------------ ------------------------------------
A1 peach
A2 pumpkin
A11 mandarin
A25 plum
B1 apple
B2 persimmon
B11 orange
B25 strawberry
AA1 cherry
AA2 loquat
AA11 pomegranate
AA25 kumquat
AC1 turnip
AC2 grape
AC11 banana
AC25 melon
16行が選択されました。
-- 行を第1キーにする場合
SQL> select * from cell_info order by to_number(regexp_substr(cell,'[0-9]+')),length(regexp_substr(cell,'[A-Z]+')),regexp_substr(cell,'[A-Z]+');
CELL CONTENTS
------------ ------------------------------------
A1 peach
B1 apple
AA1 cherry
AC1 turnip
A2 pumpkin
B2 persimmon
AA2 loquat
AC2 grape
A11 mandarin
B11 orange
AA11 pomegranate
AC11 banana
A25 plum
B25 strawberry
AA25 kumquat
AC25 melon
16行が選択されました。
방법 : 셀 위치의 문자열을 분해하고 정렬했습니다.
regexp_substr
함수에서 문자열을 분해하여 정렬 키로 만들었습니다.
행 번호는 수치화하지 않으면 문자열로서 「1 > 11 > 2 > 21」같이 소트되어 버립니다.
SQL> select cell,length(regexp_substr(cell,'[A-Z]+')) as 列番号の文字数,regexp_substr(cell,'[A-Z]+') as 列番号の部分,to_number(regexp_substr(cell,'[0-9]+')) as 行番号の部分 from cell_info;
CELL 列番号の文字数 列番号の部分 行番号の部分
------------ -------------- ------------------------------------------------ ------------
A1 1 A 1
A11 1 A 11
A2 1 A 2
A25 1 A 25
AA1 2 AA 1
AA11 2 AA 11
AA2 2 AA 2
AA25 2 AA 25
AC1 2 AC 1
AC11 2 AC 11
AC2 2 AC 2
AC25 2 AC 25
B1 1 B 1
B11 1 B 11
B2 1 B 2
B25 1 B 25
16行が選択されました。
Reference
이 문제에 관하여(SQL에서 Excel의 셀 위치와 같은 값을 정렬하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ponsuke0531/items/3c2808163efe01c8f731
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SQL> select * from cell_info order by cell;
CELL CONTENTS
------------ ------------------------------------
A1 peach
A11 mandarin --> 「1」の次は「11」じゃなくて「2」がいい
A2 pumpkin
A25 plum
AA1 cherry --> 「A」の次は「AA」じゃなくて「B」がいい
AA11 pomegranate
AA2 loquat
AA25 kumquat
AC1 turnip
AC11 banana
AC2 grape
AC25 melon
B1 apple
B11 orange
B2 persimmon
B25 strawberry
16行が選択されました。
결론
-- 列を第1キーにする場合
SQL> select * from cell_info order by length(regexp_substr(cell,'[A-Z]+')),regexp_substr(cell,'[A-Z]+'),to_number(regexp_substr(cell,'[0-9]+'));
CELL CONTENTS
------------ ------------------------------------
A1 peach
A2 pumpkin
A11 mandarin
A25 plum
B1 apple
B2 persimmon
B11 orange
B25 strawberry
AA1 cherry
AA2 loquat
AA11 pomegranate
AA25 kumquat
AC1 turnip
AC2 grape
AC11 banana
AC25 melon
16行が選択されました。
-- 行を第1キーにする場合
SQL> select * from cell_info order by to_number(regexp_substr(cell,'[0-9]+')),length(regexp_substr(cell,'[A-Z]+')),regexp_substr(cell,'[A-Z]+');
CELL CONTENTS
------------ ------------------------------------
A1 peach
B1 apple
AA1 cherry
AC1 turnip
A2 pumpkin
B2 persimmon
AA2 loquat
AC2 grape
A11 mandarin
B11 orange
AA11 pomegranate
AC11 banana
A25 plum
B25 strawberry
AA25 kumquat
AC25 melon
16行が選択されました。
방법 : 셀 위치의 문자열을 분해하고 정렬했습니다.
regexp_substr
함수에서 문자열을 분해하여 정렬 키로 만들었습니다.행 번호는 수치화하지 않으면 문자열로서 「1 > 11 > 2 > 21」같이 소트되어 버립니다.
SQL> select cell,length(regexp_substr(cell,'[A-Z]+')) as 列番号の文字数,regexp_substr(cell,'[A-Z]+') as 列番号の部分,to_number(regexp_substr(cell,'[0-9]+')) as 行番号の部分 from cell_info;
CELL 列番号の文字数 列番号の部分 行番号の部分
------------ -------------- ------------------------------------------------ ------------
A1 1 A 1
A11 1 A 11
A2 1 A 2
A25 1 A 25
AA1 2 AA 1
AA11 2 AA 11
AA2 2 AA 2
AA25 2 AA 25
AC1 2 AC 1
AC11 2 AC 11
AC2 2 AC 2
AC25 2 AC 25
B1 1 B 1
B11 1 B 11
B2 1 B 2
B25 1 B 25
16行が選択されました。
Reference
이 문제에 관하여(SQL에서 Excel의 셀 위치와 같은 값을 정렬하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ponsuke0531/items/3c2808163efe01c8f731텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)