ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • oracle 문자형 함수
    DataBase/oracle 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

    'DataBase > oracle' 카테고리의 다른 글

    oracle group by , having , rollup  (0) 2020.03.15
    oracle 날짜함수, 변환함수, decode, case  (0) 2020.03.15
    oracle 숫자형 함수  (0) 2020.03.15
    Select  (0) 2020.03.10
    Oracle scott계정 연결  (0) 2020.03.09

    댓글

Designed by Tistory.