재작년 3월에 hana 관련 내가 적은 글 봐도 뭔 소린지... 이게 실무와 공부의 차이인가(아님)
문제 :
1. 알수없는 문자와 LF,CR 등이 문자열에 끼어 DB에 저장 되어 있음(내가 만든거 아님..)
2. where 절에 조건으로 넣으니 검색이 안됨
1차 해결 : REPLACE와 CHR(10), CHR(13)으로 간단하게 해결하기
SELECT *
FROM TABLE_NAME
WHERE REPLACE(COLUMN_NAME, CHR(10), '')
LIKE '%' || REPLACE(COLUMN_NAME, CHR(10) || CHR(13), '') || '%'
로 어느정도 해결 되는 듯 했으나 또 검색 조건에 안 걸림
2차 해결 : REGEXP_REPLACE()
극단적으로 숫자와 문자를 제외하고 모든 것 삭제하도록 쿼리 수정
챗지피티 이 뻥쟁이는 hana 함수에 없는걸 계속 있다고 함;;
그래서 무조건 hana에 있는거 맞아? 증거가져와 라고 다시 물어봐야 함..
SELECT REGEXP_REPLACE('ABC123!@#', '[^A-Za-z0-9]', '') AS cleaned_string
FROM DUMMY;
REGEXP_REPLACE 함수 사용하기!
정규 표현식 패턴과 일치하는 첫 번째 문자열을 두 번째로 지정된 문자열로 바꾸어 주어진 문자열을 반환합니다.
--syntax
regexp_replace ( string, regex, replacement )
-- example
regexp_replace('aaadogaaa', '[b-z]*', 'cat') returns 'aaacataaa'.
regexp_replace('aaadogaaa', '[b-z]*', '') returns 'aaaaaa'.
regexp_replace('aaa', '[a-z]*', 'dog') returns 'dog'.
regexp_replace('aaa', '[b-z]*', 'dog') returns 'aaa'.
-- usage
문자열에 POSIX 정규 표현식과 일치하는 것이 없으면 함수는 대체 문자열 없이 문자열을 반환합니다.
regex가 유효한 정규 표현식이 아니면 함수는 NULL을 반환합니다.
-U 서버 옵션이 지정된 경우 이 함수는 UTF-8 문자열로 작동합니다.
참고자료 :: REGEXP_REPLACE
분명히 공식문서에도 있는게 dbeaver에선 그런 함수가 없대요... 대신 regexp_replace()함수는 있답니다...
3차 해결 : REGEXP_REPLACE()
REPLACE_REGEXPR( <패턴> [ 플래그 < 플래그> ]
IN <정규식_주제_문자열>
[ WITH <바꾸기_문자열> ]
[ FROM <시작_위치> ]
[ 발생 <정규식_바꾸기_발생 > ])
-- 핵간단설명
REPLACE_REGEXPR( '패턴' IN 변경할 칼럼명 WITH '바꿀문자열')
REPLACE_REGEXPR( '패턴' IN 변경할 칼럼명 WITH '바꿀문자열')
끄읏 ^^..
--설명
정규 표현식 패턴에 대한 문자열을 검색하여 정규 표현식 패턴이 한 번 또는 모든 발생하는 부분을 대체 문자열로 바꾸어 문자열을 반환합니다. 다음 매개변수 중 하나라도 NULL이면 함수는 NULL을 반환합니다: <pattern> , <flag> , <regex subject_string> , <replacement_string> , <start_position> 또는 <regex_replace_occurrence> .
-- 어려운 예시
예제에서는 정규 표현식을 사용하여 날짜 형식을 2014-04-01값으로 바꿉니다. 01/04/2014:
SELECT REPLACE_REGEXPR('([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})' IN '2014-04-01'
WITH '\3/\2/\1' OCCURRENCE ALL) "replace_regexpr" FROM DUMMY;
으아~ 드디어 해결 됐슴다....
참고자료 :: REGEXP_REPLACE
'DB > ORACLE,HANA' 카테고리의 다른 글
S/4HANA - 특정 구분자로 이루어진 문자열 부분 추출 - SUBSTRING_REGEXPR / REGEXP_SUBSTR (0) | 2025.02.06 |
---|---|
[Oracle] 자주 쓰는 쿼리 (0) | 2023.05.17 |
PL/SQL 테이블 구조, 테이블 칼럼만 보는 단축키 (0) | 2023.04.06 |
[오라클] 인덱스 (0) | 2023.03.24 |
Oracle -> S4Hana translate 대체 함수 (0) | 2023.03.13 |