๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€/Oracle

[ex10] string function

ex10_string_fucnction

 

1. upper(), lower(), initcap()
- varchar2 upper(์ปฌ๋Ÿผ) : ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
- varchar2 lower(์ปฌ๋Ÿผ) : ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
- varchar2 initcap(์ปฌ๋Ÿผ) : ์ฒซ๊ธ€์ž๋งŒ ๋Œ€๋ฌธ์ž, ๋‚˜๋จธ์ง„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ (์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•)

select
    'abc', initcap('abc'), initcap('aBC') -- ๊ฒฐ๊ณผ : abc/Abc/Abc
from dual;

2. substr()

- ๋ฌธ์ž์—ด ์ถ”์ถœ ํ•จ์ˆ˜
- varchar2 substr(์ปฌ๋Ÿผ, ์‹œ์ž‘์œ„์น˜, ๊ฐ€์ ธ์˜ฌ ๋ฌธ์ž ๊ฐœ์ˆ˜)
- varchar2 substr(์ปฌ๋Ÿผ, ์‹œ์ž‘์œ„์น˜) 
- โ˜…โ˜…โ˜… SQL ์ธ๋ฑ์Šค > 1๋ถ€ํ„ฐ ์‹œ์ž‘

select
    name,
    substr(name, 1, 1) as "์„ฑ",
    substr(name, 2) as "์ด๋ฆ„",
    ssn,
    substr(ssn, 1, 2) as "์ƒ๋…„",
    substr(ssn, 3, 2) as "์ƒ์›”",
    substr(ssn, 5, 2) as "์ƒ์ผ",
    substr(ssn, 8, 1) as "์„ฑ๋ณ„"
from tblInsa;

3. length()

- ๋ฌธ์ž์—ด ๊ธธ์ด ๋ฐ˜ํ™˜ ํ•จ์ˆ˜
- number length(์ปฌ๋Ÿผ)

--์ปฌ๋Ÿผ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ
select name, length(name) from tblCountry;

--์กฐ๊ฑด์ ˆ์—์„œ ์‚ฌ์šฉ
select name, length(name) from tblCountry where length(name) > 3;
select name, length(name) from tblCountry where length(name) between 4 and 6;

--์ •๋ ฌ์—์„œ ์‚ฌ์šฉ
select name, length(name) from tblCountry order by length(name) desc;

 

- ๊ฒŒ์‹œํŒ ์ œ๋ชฉ์ด ๊ธธ๋ฉด ์ž˜๋ผ์„œ ๋ง์ค„์ž„ํ‘œ ํ‘œ์‹œ(..)

select 
    title,
    case
        when length(title) >= 8 then substr(title, 1, 8) || '..'
        else title
    end
from tblTodo;

4. instr()

- ๊ฒ€์ƒ‰ํ•จ์ˆ˜(์ž๋ฐ”์˜ indexOf)
- ๊ฒ€์ƒ‰์–ด์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜
- number instr(์ปฌ๋Ÿผ, ๊ฒ€์ƒ‰์–ด)
- number instr(์ปฌ๋Ÿผ, ๊ฒ€์ƒ‰์–ด, ์‹œ์ž‘ ์œ„์น˜)
- number instr(์ปฌ๋Ÿผ, ๊ฒ€์ƒ‰์–ด, ์‹œ์ž‘ ์œ„์น˜, -1) > lastIndexOf
๋ชป ์ฐพ์œผ๋ฉด 0 ๋ฐ˜ํ™˜

select
    '์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜',
    instr('์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜', 'ํ™๊ธธ๋™') as r1,
    instr('์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜', '์•„๋ฌด๊ฐœ') as r2,
    instr('์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜. ํ™๊ธธ๋™๋‹˜!', 'ํ™๊ธธ๋™') as r3,
    instr('์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜. ํ™๊ธธ๋™๋‹˜', 'ํ™๊ธธ๋™', 11) as r4,
    instr('์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜. ํ™๊ธธ๋™๋‹˜', 'ํ™๊ธธ๋™'
            , instr('์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜. ํ™๊ธธ๋™๋‹˜!', 'ํ™๊ธธ๋™') + length('ํ™๊ธธ๋™')) as r5,
    instr('์•ˆ๋…•ํ•˜์„ธ์š”. ํ™๊ธธ๋™๋‹˜. ํ™๊ธธ๋™๋‹˜!', 'ํ™๊ธธ๋™', -1) as r6
from dual;

5. lpad(), rpad()
- left padding, right padding
- ์ฑ„์šฐ๊ธฐ
- varchar2 lpad(์ปฌ๋Ÿผ, ๊ฐœ์ˆ˜, ๋ฌธ์ž)
- varchar2 rpad(์ปฌ๋Ÿผ, ๊ฐœ์ˆ˜, ๋ฌธ์ž)

 

select 
    'a',
    lpad('a', 5, 'b'), -- bbba
    '1',
    lpad('1', 3, '0'), --001
    lpad('12', 3, '0'), --012
    lpad('123', 3, '0'), --123
    lpad('1234', 3, '0'), --123
    rpad('1', 3, '0') --100
from dual;

 

6. trim(), ltrim(), rtrim()
- ๊ณต๋ฐฑ ์ œ๊ฑฐ
- varchar2 trim(์ปฌ๋Ÿผ)
- varchar2 ltrim(์ปฌ๋Ÿผ)
- varchar2 rtrim(์ปฌ๋Ÿผ)

select
    '   ํ•˜๋‚˜  ๋‘˜   ์…‹   ',
    trim('   ํ•˜๋‚˜  ๋‘˜   ์…‹   '),
    ltrim('   ํ•˜๋‚˜  ๋‘˜   ์…‹   '),
    rtrim('   ํ•˜๋‚˜  ๋‘˜   ์…‹   ')
from dual;



7. replace()
- ๋ฌธ์ž์—ด ์น˜ํ™˜
- varchar2 replace(์ปฌ๋Ÿผ, ์ฐพ์„ ๋ฌธ์ž์—ด, ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด)

 

**case์™€์˜ ์ฐจ์ด์ 

- case๋Š” ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ null ๋ฐ˜ํ™˜

- replace๋Š” ์›๋ณธ๊ฐ’ ๋ฐ˜ํ™˜

select 
    replace('ํ™๊ธธ๋™', 'ํ™', '๊น€'),
    replace('ํ™๊ธธ๋™', '์ด', '๊น€'),
    replace('ํ™๊ธธํ™', 'ํ™', '๊น€')
from dual;

select 
    name,
    continent,
    case
        when continent = 'AS' then '์•„์‹œ์•„'
        when continent = 'EU' then '์œ ๋Ÿฝ'
        when continent = 'AG' then '์•„ํ”„๋ฆฌ์นด'
    end as c1,
    replace(replace(replace(continent, 'AS', '์•„์‹œ์•„'), 'EU', '์œ ๋Ÿฝ'), 'AF', '์•„ํ”„๋ฆฌ์นด') as c2
from tblCountry;

 



8. decode()
- ๋ฌธ์ž์—ด ์น˜ํ™˜
- replace์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ƒํ™ฉ์— ๋”ฐ๋ผ ํ›จ์”ฌ ํŽธํ•จ
- varchar2 decode(์ปฌ๋Ÿผ, ์ฐพ์„ ๋ฌธ์ž์—ด, ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด [, ์ฐพ์„ ๋ฌธ์ž์—ด, ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด] x N)
- ๋ฌธ์ž์—ด ์กฐ์ž‘ > case์˜ ๊ฐ„๋‹จํ•œ ๋ฒ„์ „
- ๋ฌธ์ž์—ด์„ ๋ชป ์ฐพ์œผ๋ฉด null ๋ฐ˜ํ™˜

select
    gender,
    case
        when gender = 'm' then '๋‚จ์ž'
        when gender = 'f' then '์—ฌ์ž'
    end as g1,
    
    replace(replace(gender, 'm', '๋‚จ์ž'), 'f', '์—ฌ์ž') as g2,
    
    decode(gender, 'm', '๋‚จ์ž','f', '์—ฌ์ž') as g3
    
from tblComedian;

--๋‚จ์ž์™€ ์—ฌ์ž์˜ ์ˆ˜
select
    count(decode(gender, 'm', 1)) as "๋‚จ์ž",
    count(decode(gender, 'f', 1)) as "์—ฌ์ž"
from tblComedian;