Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

특정 마지막 문자열 문자로 정렬하는 MySQL 쿼리?


이를 위해 CASE 문을 사용할 수 있습니다. 정렬하려면 ORDER BY 절을 사용하십시오. 먼저 테이블을 생성하겠습니다 -

mysql> create table DemoTable
   -> (
   -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> ClientName varchar(20)
   -> );
Query OK, 0 rows affected (0.54 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 일부 레코드에는 -D 등과 같은 특정 마지막 문자열이 있습니다. -

mysql> insert into DemoTable(ClientName) values('Mike');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(ClientName) values('John');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(ClientName) values('John-D');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(ClientName) values('John-Smith');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(ClientName) values('Mike-Smith');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(ClientName) values('Mike-D');
Query OK, 1 row affected (0.15 sec)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> select *from DemoTable;

이것은 다음과 같은 출력을 생성합니다 -

+----------+------------+
| ClientId | ClientName |
+----------+------------+
|        1 | Mike       |
|        2 | John       |
|        3 | John-D     |
|        4 | John-Smith |
|        5 | Mike-Smith |
|        6 | Mike-D     |
+----------+------------+
6 rows in set (0.00 sec)

다음은 특정 마지막 문자열 문자를 기준으로 정렬하는 쿼리입니다. -

mysql> select
   -> case
   -> when right(ClientName,length(ClientName)-instr(ClientName,'-')) = `ClientName` THEN ''
   -> else right(`ClientName`,length(`ClientName`)-INSTR(`ClientName`,'-'))
   -> end as `last`,
   -> `ClientName`
   -> from
   -> DemoTable
   -> ORDER BY
   -> `last`,`ClientName`;

이것은 다음과 같은 출력을 생성합니다 -

+-------+------------+
| last  | ClientName |
+-------+------------+
|       | John       |
|       | Mike       |
| D     | John-D     |
| D     | Mike-D     |
| Smith | John-Smith |
| Smith | Mike-Smith |
+-------+------------+
6 rows in set (0.00 sec)