database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 31414 게시물 읽기
No. 31414
v24n1 을 제24권 제1호 로 s224를 제 244권 으로 어떻게 바꿀까요??
작성자
김종수(enmu)
작성일
2023-03-02 17:11ⓒ
2023-03-02 17:21ⓜ
조회수
14,172

replace 를 시켜야 하는 상황입니다. 


컬럼의 값이 다양한 형태로 있는데 v24n1 을 Vol. 24 No.1 과 같이 앞으로 바꾸는 것은 하였는데

v24n1 을 제 24권 제 1호 처럼 앞뒤로 바꿔줘야 하는 것은 어떻게 해야할지 모르겠습니다. 

뒤로 붙여도 됩니다. 24권 1호 처럼요.. 


이게 숫자가 2자, 1자 이렇게 정해진 것은 아니고 1~3자, 4자도 있습니다. 

물론 n1 이 없이 v24 만 있는 경우도 있습니다. 이 때는 제 24권 으로 바꾸면 됩니다. 


이럴 때는 쿼리를 어떻게 쓰면 좋을까요..? 

 

이 글에 대한 댓글이 총 3건 있습니다.
WITH t AS
(
SELECT 'v24n1' v
UNION ALL SELECT 'v2n10'
UNION ALL SELECT 'v12'
)
-- 최신 버전이라면 정규식 이용해 보세요.
SELECT v
     , REGEXP_REPLACE(REGEXP_REPLACE(v
       , 'v([0-9]+)',  '제 \\1 권')
       , 'n([0-9]+)', ' 제 \\1 호') x
  FROM t
;

 
마농(manon94)님이 2023-03-02 18:23에 작성한 댓글입니다.
이 댓글은 2023-03-03 08:08에 마지막으로 수정되었습니다.
WITH t AS
(
SELECT 'v24n1' v
UNION ALL SELECT 'v2n10'
UNION ALL SELECT 'v12'
)
SELECT v
     , CASE WHEN INSTR(v, 'n') = 0
            THEN CONCAT(REPLACE(v, 'v', '제 '), ' 권')
            ELSE CONCAT(REPLACE(REPLACE(v, 'v', '제 '), 'n', ' 권 제 '), ' 호')
        END x
  FROM t
;

 
마농(manon94)님이 2023-03-03 09:17에 작성한 댓글입니다.

감사합니다 ^ ^

참고하여 작업하고, 안되는 것은 엑셀로 보정 하였습니다.

김종수(enmu)님이 2023-03-14 18:25에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31440표시 순서 변경하기 [3]
mossmin
2023-06-30
6325
31439mysql procedure 진행 시 에러
inseong
2023-04-18
13420
31415복합키 조인 및 조회 [2]
mossmin
2023-03-09
14153
31414v24n1 을 제24권 제1호 로 s224를 제 244권 으로 어떻게 바꿀까요?? [3]
김종수
2023-03-02
14172
31413서비스 운영중인 Database 클러스터에 dump 파일을 안전하게 복원하는 방법에 대한 문의
개미
2023-02-15
13499
31411mariadb procedure에서 여러 row를 한꺼번에 insert하는 방법
doritang
2023-02-14
11288
31410초보. 쿼리문 부탁드립니다 [13]
홍길수
2023-02-05
7938
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다