DataBase/oracle

oracle 문자형 함수

HUCHUCHU 2020. 3. 15. 16:02

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*문자형 함수*/
 
-- concat( char1, char2 ) 문자열과 문자열을 합치는 함수
-- 데이터 타입이 같을경우 char1의 타입으로 반환함
-- char1 에 올 수 있는 타입 ::: char, varchar
-- 연산자 || 을 사용하여 합칠수도있다
select concat('hello''oracle'), concat('good''bad'from dual;
select concat('good','bad') concats, 'good' || 'bad' operators from dual; -- goodbad    goodbad
 
-- initcap(char) 첫번째 문자를 대문자로 바꿔줌
select initcap('good morning'from dual; -- Good Morning
                                          -- 공백을 구분자로 대문자가 적용됨
select initcap('good/bad morning'from dual; -- Good/Bad Morning
                                              -- / 는 알파벳이 아니기때문에 /도 구분자로 인식하여 B도 대문자출력
                                              
-- lower(char):: 소문자변환 , upper(char) :: 대문자변환
select lower('GOOD'from dual; -- good
select upper('good'from dual; -- GOOD
 
-- lpad() 왼쪽으로 두번째 파라미터만큼 글자 수를 추가함
-- LPAD1 도 6자리이며 공백으로 채워져있음
select lpad('good'6"LPAD1", lpad('good'6'@'"LPAD2", lpad('good'8'L')
from dual; --   good    @@good
 
-- rpad(char)
select rpad('good'6"RPAD1", rpad('good'6'@'"RPAD2", rpad('good'8'R')
from dual; --  good      good@@    goodRRRR
 
-- *** 알파벳을 한글자당 1바이트, 한글은 글자당 2바이트이므로 한글을 쓸 때는 잘 계산해서 써야함
select lpad('홍길동'6'#'from dual; -- 홍길동 (이미 홍길동이 6바이트를 먹고있기때문)
select lpad('홍길동'8'#'from dual; -- ##홍길동 
 
-- ltrim(), rtrim() 문자열에서 무엇인가를 제거할 때 사용
select ltrim('goodbye'from dual; -- goodbye 자를게없음
select ltrim('goodbye''g'), ltrim('goodbye''o'), ltrim('goodbye''go'from dual; 
-- oodbye    goodbye (중간에있는건 못지움!!)  dbye (go에 포함된 문자 모두 지움)
select rtrim('goodbye''go'from dual; -- goodbye (오른쪽부터 go가 없기때문에 그대로 출력)
 
-- substr(char, 위치값, 몇개자를지) 문자 자르기
select substr('good morning jhon'84)from dual; -- rnin 8번째 글자부터 4개 (1부터시작, 공백포함)
select substr('good morning jhon'8)from dual;  -- rning jhon 갯수를 생략하게되면 나머지 모두 출력
 
select substr('good morning jhon'-4from dual; -- jhon 오른쪽 끝에서부터 4글자 반환
select substr('good morning jhon'-42from dual; -- jh
select substr('good morning jhon'-40from dual; -- null *** 0을 쓰면 null 반환!
 
--substrb() byte수만큼 갯수 가져옴
select substrb('good morning jhon'84)from dual; -- rnin
select substrb('good morning jhon'8)from dual; -- rning jhon
 
select substrb('내일은월요일',2from dual; --   일은월요일 
select substrb('내일은월요일',2,6from dual; --  일 뭐지 이거 좀 이상해
 
-- replace() 교체
select replace('good morning tom' , 'morning''evening'from dual; -- good evening tom
 
--translate() 
select replace('You are not alone''You''We') replace , translate('You are not alone''You''We') translate from dual;
-- We are not alone      We are net alene (1:1 대응하여 바뀜 Y는 w로 o 는 e로 바뀜)
 
-- trim() 
select length(trim(leading from 'good')) from dual; -- good,  4
select length(' good'from dual; -- 5
select length(trim(leading from ' good')) from dual; -- good 4 (trim 으로 공백잘림)
select length(trim(leading from ' good ')) ,  -- 5 왼쪽 자름
       length(trim(trailing from ' good ')) , -- 5 오름쪽 자름
       length(trim(both from ' good')),       -- 4 양쪽 공백자름
       trim(leading 'g' from 'good'),         -- ood ** 한글자만 자를 수 있음 
       trim(trailing 'd' from 'good')         -- goo
from dual;
select length(' g o o d 'from dual; -- 9
select length(trim(' g o o d ')) from dual; -- 7 가운데 공백은 안잘리넹..호옹
select replace(' g o o d '' '''from dual; -- good
select length(replace(' g o o d '' ''')) from dual; -- 4 가운데공백 잘림!! 가운데 공백 자를때는 replace로 사용!
 
 
-- ascii() 문자열을 아스키값으로 출력
select ascii('a'from dual; --97
 
-- instr() 특정한 *문자열* 찾을 때
select instr('good morning jhon''or'1from dual; --7 일곱번째에 or나옴
select instr('good morning jhon''n'12from dual; --11 첫번째글자부터 검색해서 n이 두번째로 나오는 위치
 
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter