데이터베이스 들여쓰기 기능을 만드는 중인데, 질문 있습니다 0 3 1,316

by 메밀묵도토리묵 [SQL Query] mariadb dbeaver [2022.04.28 11:36:17]


menu_nm

사과

    포도

    자두

키위

    딸기

 

// 이런식으로 나오고 싶어서

 

select menu_nm, 

LPAD(' ', 4 * (menu_level-1)) || menu_nm as 메뉴명

from tb_web_menu_bas twmb

 

// 이렇게 코드를 작성했는데요..

 

menu_nm              메뉴명

사과                               0

배                       0

포도                               0

자두                               0

키위                               0

딸기                               0

 

 

// 결과가 이렇게 나오는데, 혹시 어떻게 해야 맨 위처럼 들여쓰기(계층적)를 만들 수 있을까요?

mariadb랑 dbeaver를 사용하고 있고, dbeaver에서 open sql console해서 하고 있습니다..

by 신이만든지기 [2022.04.28 11:49:21]
LPAD(menu_nm, 4 * menu_level, ' ')

이렇게 한번 해보시겠어요?


by bellpp [2022.04.28 11:57:37]

작성하신 sql 사용해보니 원하시는데로 나오는것같습니다.

create table test ( a varchar(50), b integer)
insert into test values ('사과',1)
insert into test values ('배',1)
insert into test values ('포도',2)
insert into test values ('자두',2)
insert into test values ('키위',1)
insert into test values ('딸기',2)

select a ,
LPAD(' ', 4 * (b-1)) || a as 메뉴명
from test 

 

사과    사과
배       배
포도        포도
자두        자두
키위    키위
딸기        딸기


by 마농 [2022.04.28 13:01:27]
-- 믄자열 연결 연산자 || 은 Oracle 용입니다.
-- MySQL, MariaDB 에서는 CONCAT() 사용하세요.
 CONCAT(LPAD(' ', 4 * (menu_level-1)), menu_nm) AS 메뉴명

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입