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 31443 게시물 읽기
No. 31443
고수님분께 여쭙니다.
작성자
cheongha(taxday)
작성일
2024-02-13 17:26
조회수
712

초보입니다.

[mysql4.012]

- A컬럼에 연속되는 '=' 문자가 3개부터 60여개까지 포함되어있는 모든 컬럼을

'=문자를  '^' 문자로  60개로 변경하는 방법이 어떻게 하면 되는지요?

REPLACE()로 하면 '='이 아닌 뒤에 글자까지 밀리면서 변경되어버립니다.

부탁드립니다. 감사합니다

이 글에 대한 댓글이 총 10건 있습니다.

4.0 이라 한참 된 버전이군요.. 메널을 찾아보긴 좀 귀찮아서 한번 찾아보시구요..


= 를 ^ 로 바꾸고 싶은데 자릿수를 60으로 맞추고 싶으신거죠?


LPAD 와 REPLACE 함수를 사용하시면 될것 같습니다.


LPAD( REPLACE( A, '=', '^' ), 60, '^' )


사용법이 맞는지 모르겟네요 메뉴얼과 구글링 으로 보완해보셔요

백록화(백록화)님이 2024-02-14 09:21에 작성한 댓글입니다.

백록화님 답변에 감사드립니다.

답변을 근거로 

UPDATE table_a SET col_a =  LPAD( REPLACE( col_a , '=', '^' ), 60, '^' ) where 1=1' ;

해보면 '='몇개는 치환되면서 뒤에 모든 문구가 사라집니다.

제가 잘못 적용한건가요?

cheongha(taxday)님이 2024-02-14 12:08에 작성한 댓글입니다.

substring_index로 될까요?


SELECT CONCAT (SUBSTRING_INDEX(col_a, '=', 1), LPAD('', 60, '^'), SUBSTRING_INDEX(col_a, '=', -1)) 

정상규(pajama)님이 2024-02-14 13:58에 작성한 댓글입니다.

정상규님 답변에 감사드립니다.


UPDATE table_a  set col_a =  CONCAT(SUBSTRING_INDEX(col_a , '=', 1), LPAD(space(1), 114, '^'), SUBSTRING_INDEX(col_a, '=', -1) ) where 1=1  ; 


이렇게 하면 거의 원하는 답이 나옵니다.

그러나 아직도 어떤 col_a 내용이 완전치 않고

당겨져 치환되는 현상이 있습니다.


감사합니다.

cheongha(taxday)님이 2024-02-14 17:13에 작성한 댓글입니다.

사용하시는 mysql 버전에서 정규식 표현 지원이 되지 않아서

케이스 별로 업데이트해야 되지 않을까 싶습니다.

어떤 케이스가 있을지 가늠하기가 어렵네요.

정상규(pajama)님이 2024-02-14 21:21에 작성한 댓글입니다.

관심을 갖어주신 백록화님 정상규님께 감사드립니다.

저도 더 공부해서 도움을 주는 사람이 되도록 노력하겠습니다.

나이 60넘어 요것 저것 해볼라하니

고수님들의 도움이 얼마나 좋은지 모르겠네요^^

cheongha(taxday)님이 2024-02-14 23:35에 작성한 댓글입니다.

1. Update 바로 하지 마시고

- Select 해서 검증부터 하세요.

2. 샘플 데이터 예시를 좀 들어주세요.

- 원본 대비 원하는 결과 샘플

- 글자가 당겨지는 자료 예시 등

마농(manon94)님이 2024-02-15 12:49에 작성한 댓글입니다.

감사합니다. 


요지는 


 예정고지세액

================


  1. 체크포인트 및 관련 주요내용


     예정신고기간에 신고하지 아니하고 고지서에 의하여 납부한 사업자로서 고지금액을 기재하며,

  이 경우 납부기한을   경과하여 가산금을 납부한 경우 가산금을 합산하지 아니한다.





 위의 내용을 아래 형태로 하고자 함입니다.




  예정고지세액

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒


  1. 체크포인트 및 관련 주요내용


     예정신고기간에 신고하지 아니하고 고지서에 의하여 납부한 사업자로서 고지금액을 기재하며,

  이 경우 납부기한을   경과하여 가산금을 납부한 경우 가산금을 합산하지 아니한다.


 

cheongha(taxday)님이 2024-02-15 16:32에 작성한 댓글입니다.
이 댓글은 2024-02-15 16:34에 마지막으로 수정되었습니다.
WITH t AS
(
SELECT 
'예정고지세액
=
==
3개 미만 변환 안함
3개 이상 부터 변환
===
====
=====
======
  1. 체크포인트 및 관련 주요내용' txt
)
-- MariaDB 10.7 에서 테스트 --
SELECT txt
     , REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(txt
       , '===', '@▒')
       , '▒@', '')
       , '▒=', '▒')
       , '▒=', '▒')
       , '@▒', RPAD('▒', 60, '▒')
       ) x
  FROM t
;

-- 변경전 --
예정고지세액
=
==
3개 미만 변환 안함
3개 이상 부터 변환
===
====
=====
======
  1. 체크포인트 및 관련 주요내용

-- 변경후 --
예정고지세액
=
==
3개 미만 변환 안함
3개 이상 부터 변환
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  1. 체크포인트 및 관련 주요내용

 
마농(manon94)님이 2024-02-15 20:28에 작성한 댓글입니다.

마농님 답변내용으로 답을 얻었습니다.

알아야 질문도 할 수 있다는 것을 알게 됩니다.


바쁘신 업무중에도 시간내어 답변주신 모든분께 감사드립니다.


감사감사^^

cheongha(taxday)님이 2024-02-16 11:51에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31446테이블 설계 관련 질문드려요. [3]
김선엽
2024-03-24
637
31445mysql과 파이썬 프로그램 연동 후 배포 관련 여쭙습니다 [1]
junhyeok
2024-02-20
631
31444mysql mad,mai파일 [2]
살려줘요
2024-02-15
694
31443고수님분께 여쭙니다. [10]
cheongha
2024-02-13
712
31442MYSQL 쿼리튜닝 [2]
사랑이
2023-12-17
2067
31440표시 순서 변경하기 [3]
mossmin
2023-06-30
6431
31439mysql procedure 진행 시 에러
inseong
2023-04-18
13530
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다