Escolar Documentos
Profissional Documentos
Cultura Documentos
SQL em Oracle > DML > Funes > Funes de linha > Funes para converso de tipos
atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. T_AE'060-721:5,YY-MDH2:IS'+ ODT(20-711:54''YYM-DH4M:S)1 -----------------------20-71 1:54 060-8 21:5 1rw slce os eetd
A funo TO_DATE() converte de cadeia de caracteres em data. data resultante adicionamos um dia; A data obtida pelo comando anterior apresentada usando o formato definido pelo comando ALTER SESSION SET NLS_DATE_FORMAT; Topo
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm
1/11
14/01/13
atrssinstnstrioy'OTGL; le eso e l_ertr=PRUA' atrssinstnslnug=PRUUS' le eso e l_agae'OTGEE; atrssinstnsdt_omt'yym-dh2:is' le eso e l_aefra=yy-md h4m:s; slc eet eae nm, hrdt, ieae t_hrhrdt,dy d "e Mnh"e YY' oca(ieae'a, d d" ot d" YY) fo ep rm m;
atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. EAE NM HRDT IEAE T_HRHRDT,DYD"EMNHD"YY) OCA(IEAE'A,DD"OT"EYY' ----- --------------------------------------- ------------ --------------------SIH MT 18-21 0:00 901-7 00:0 qat-er ,1 d Dzmr d 18 urafia 7 e eebo e 90 ALN LE 18-22 0:00 910-0 00:0 sxafia ,2 d Fvriod 18 et-er 0 e eeer e 91 WR AD 18-22 0:00 910-2 00:0 dmno oig ,2 d Fvriod 18 2 e eeer e 91 JNS OE 18-40 0:00 910-2 00:0 qit-er ,0 d Arl unafia 2 e bi d 18 e 91 MRI ATN 18-92 0:00 910-8 00:0 sgnafia 2 d Stmr d 18 eud-er, 8 e eebo e 91 BAE LK 18-50 0:00 910-1 00:0 sxafia ,0 d Mi et-er 1 e ao d 18 e 91 CAK LR 18-60 0:00 910-9 00:0 trafia ,0 d Jno e-er 9 e uh d 18 e 91 SOT CT 18-20 0:00 921-9 00:0 qit-er ,0 d Dzmr d 18 unafia 9 e eebo e 92 KN IG 18-11 0:00 911-7 00:0 trafia ,1 d Nvmr d 18 e-er 7 e oebo e 91 TRE UNR 18-90 0:00 910-8 00:0 trafia ,0 d Stmr d 18 e-er 8 e eebo e 91 AAS DM 18-11 0:00 930-2 00:0 qat-er ,1 d Jnio d 18 urafia 2 e aer e 93 JMS AE 18-20 0:00 911-3 00:0 qit-er ,0 d Dzmr d 18 unafia 3 e eebo e 91 FR OD 18-20 0:00 911-3 00:0 qit-er ,0 d Dzmr d 18 unafia 3 e eebo e 91 MLE ILR 18-12 0:00 920-3 00:0 sbd ao ,2 d Jnio d 18 3 e aer e 92 1 rw slce 4 os eetd
atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. EAE NM HRDT IEAE T_HRHRDT,DYD"EMNHD"YY) OCA(IEAE'A,DD"OT"EYY' ----- --------------------------------------- ------------ --------------------SIH MT 18-21 0:00 901-7 00:0 QAT-ER ,1 d DZMR d 18 URAFIA 7 e EEBO e 90 ALN LE 18-22 0:00 910-0 00:0 SXAFIA ,2 d FVRIOd 18 ET-ER 0 e EEER e 91 WR AD 18-22 0:00 910-2 00:0 DMNO OIG ,2 d FVRIOd 18 2 e EEER e 91 JNS OE 18-40 0:00 910-2 00:0 QIT-ER ,0 d ARL UNAFIA 2 e BI d 18 e 91 MRI ATN 18-92 0:00 910-8 00:0 SGNAFIA 2 d STMR d 18 EUD-ER, 8 e EEBO e 91 BAE LK 18-50 0:00 910-1 00:0 SXAFIA ,0 d MI ET-ER 1 e AO d 18 e 91 CAK LR 18-60 0:00 910-9 00:0 TRAFIA ,0 d JNO E-ER 9 e UH d 18 e 91 SOT CT 18-20 0:00 921-9 00:0 QIT-ER ,0 d DZMR d 18 UNAFIA 9 e EEBO e 92 KN IG 18-11 0:00 911-7 00:0 TRAFIA ,1 d NVMR d 18 E-ER 7 e OEBO e 91 TRE UNR 18-90 0:00 910-8 00:0 TRAFIA ,0 d STMR d 18 E-ER 8 e EEBO e 91 AAS DM 18-11 0:00 930-2 00:0 QAT-ER ,1 d JNIO d 18 URAFIA 2 e AER e 93 JMS AE 18-20 0:00 911-3 00:0 QIT-ER ,0 d DZMR d 18 UNAFIA 3 e EEBO e 91 FR OD 18-20 0:00 911-3 00:0 QIT-ER ,0 d DZMR d 18 UNAFIA 3 e EEBO e 91 MLE ILR 18-12 0:00 920-3 00:0 SBD AO ,2 d JNIO d 18 3 e AER e 92 1 rw slce 4 os eetd
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm 2/11
14/01/13
atrssinstnstrioy'OTGL; le eso e l_ertr=PRUA' atrssinstnslnug=PRUUS' le eso e l_agae'OTGEE; atrssinstnsdt_omt'yym-dh2:is' le eso e l_aefra=yy-md h4m:s; slc eet t_hrt_ae'060-71:54''yym-dh2:is','hm:s)"oaMntsSgno" oca(odt(20-71 21:5,yy-md h4m:s) h:is' Hr iuo euds, t_hrt_ae'060-71:54''yym-dh2:is','c' oca(odt(20-71 21:5,yy-md h4m:s) sc )"uo, Scl" t_hrt_ae'060-71:54''yym-dh2:is','ya' )"n pretno, oca(odt(20-71 21:5,yy-md h4m:s) ser Ao o xes" t_hrt_ae'060-71:54''yym-dh2:is','' oca(odt(20-71 21:5,yy-md h4m:s) q )"rmsr" Tiete, t_hrt_ae'060-71:54''yym-dh2:is','H4 oca(odt(20-71 21:5,yy-md h4m:s) H2' )"oae frao2" Hr m omt 4, t_hrt_ae'060-71:54''yym-dh2:is','H oca(odt(20-71 21:5,yy-md h4m:s) H' )"oafrao1" Hr omt 2 fo da; rm ul
atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. Hr MntsSgno Scl Aopretno TieteHr e frao2 Hr frao1 oa iuo euds uo n o xes rmsr oa m omt 4 oa omt 2 -------------- ----------------------- ----------------- --- -------- ---- --------- ------1:54 21:5 2 1 totosn sx3 w huad i 1 2 1 2 1rw slce os eetd
possvel alterar a lingua com que so escritos os meses e dias da semana usando o parmetro NLS_DATE_FORMAT dentro da prpria funo:
slc t_hrssae'o d h2:is''l_aelnug=mrcn)fo da; eet oca(ydt,Mn d h4m:s,nsdt_agaeaeia' rm ul
Topo
Tem as seguintes limitaes: De um tipo DATE apenas podemos extrair o ano, o ms e o dia; S podemos extrair TIMEZONE_HOUR e TIMEZONEMINUTE de um tipo TIMESTAMP que possua TIMEZONE; Seguem alguns exemplos de utilizao:
SLC ETATYA FO DT '020-1)FO da; EET XRC(ER RM AE 21-50' RM ul SLC ETATMNHFO DT '020-1)FO da; EET XRC(OT RM AE 21-50' RM ul SLC ETATDYFO DT '020-1)FO da; EET XRC(A RM AE 21-50' RM ul Slc etatya fo ssae fo da; eet xrc(er rm ydt) rm ul Slc etatmnhfo ssae fo da; eet xrc(ot rm ydt) rm ul Slc etatdyfo ssae fo da; eet xrc(a rm ydt) rm ul
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm
3/11
14/01/13
Slc etatya fo ssietm)fo da; eet xrc(er rm ytmsap rm ul Slc etatmnhfo ssietm)fo da; eet xrc(ot rm ytmsap rm ul Slc etatdyfo ssietm)fo da; eet xrc(a rm ytmsap rm ul Slc etathu fo ssietm)fo da; eet xrc(or rm ytmsap rm ul Slc etatmnt fo ssietm)fo da; eet xrc(iue rm ytmsap rm ul Slc etatscn fo ssietm)fo da; eet xrc(eod rm ytmsap rm ul Slc etattmzn_orfo ssietm)fo da; eet xrc(ieoehu rm ytmsap rm ul Slc etattmzn_iuefo ssietm)fo da; eet xrc(ieoemnt rm ytmsap rm ul Slc etattmzn_einfo ssietm)fo da; eet xrc(ieoergo rm ytmsap rm ul Slc etattmzn_brfo ssietm)fo da; eet xrc(ieoeab rm ytmsap rm ul
Topo
T_HRSL'99999' OCA(A,$9,9.9) ------------------------$0.0 800 $,0.0 1600 $,5.0 1200 $,7.0 2950 $,5.0 1200 $,5.0 2800 $,5.0 2400 $,0.0 3000 $,0.0 5000 $,0.0 1500 $,0.0 1100 $5.0 900 $,0.0 3000 $,0.0 1300 1 rw slce 4 os eetd
A mascara 'L999G999D99' representa a mesma quantia monetria, mas agora a forma como o nmero apresentado varia com os valores das variveis NLS:
atrssinstnstrioy'MRC' le eso e l_ertr=AEIA; atrssinstnslnug=AEIA' le eso e l_agae'MRCN; slc t_hrsl'99999' eet oca(a,L9G9D9) fo ep rm m; atrssinstnstrioy'OTGL; le eso e l_ertr=PRUA' atrssinstnslnug=PRUUS' le eso e l_agae'OTGEE; slc t_hrsl'99999' eet oca(a,L9G9D9) fo ep rm m;
atrssinstscedd le eso e ucee. atrssinstscedd le eso e ucee. T_HRSL'99999' OCA(A,L9G9D9) ------------------------aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm 4/11
14/01/13
$0.0 800 $,0.0 1600 $,5.0 1200 $,7.0 2950 $,5.0 1200 $,5.0 2800 $,5.0 2400 $,0.0 3000 $,0.0 5000 $,0.0 1500 $,0.0 1100 $5.0 900 $,0.0 3000 $,0.0 1300 1 rw slce 4 os eetd
T_HRSL'99999' OCA(A,L9G9D9) ------------------------0,0 800 .0,0 1600 .5,0 1200 .7,0 2950 .5,0 1200 .5,0 2800 .5,0 2400 .0,0 3000 .0,0 5000 .0,0 1500 .0,0 1100 5,0 900 .0,0 3000 .0,0 1300 1 rw slce 4 os eetd
Quando a varivel NLS_TERRITORY recebe o valor PORTUGAL o smbolo de moeda passa a ser . Este caracter muito recente e nem todos os CHARACTER SET da base de dados o representam, como o caso da base de dados onde foram executados estes exemplos; Nesta pgina encontra uma descrio mais detalhada deste assunto e uma forma de contornar este problema; Topo
TO_NUMBER(string)
A funo TO_NUMBER converte de cadeia de caracteres para em nmero.
slc epo eae jb sl eet mn, nm, o, a fo ep rm m weesl T_UBR'50) hr a> ONME(10';
EPO MN EAE NM JB O SL A ----------- ----- -------------------------- ----- ---- ----------79 49 ALN LE SLSA 10 AEMN 60 76 56 JNS OE MNGR 27 AAE 95 79 68 BAE LK MNGR 25 AAE 80 78 72 CAK LR MNGR 25 AAE 40 78 78 SOT CT AAYT 30 NLS 00 73 89 KN IG PEIET50 RSDN 00
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm 5/11
14/01/13
FR OD
AAYT NLS
30 00
Topo
MASCARA_DATA
A tabela abaixo mostra os valores possveis para a mscara da data: FORMATO SCC ou CC YYYY ou SYYYY YYY ou YY ou Y Y,YYY RR SYEAR ou YEAR BC ou AD B.C. ou A.D. Q MM MONTH MON WW, IW ou W DDD ou DD ou D DAY DY J AM ou PM A.M.ou P.M. HH ou HH12 HH24 MI SS SSSSS /.,: "string" FM TH, SP, SPTH, THSP SIGNIFICADO Sculo; 'S' faz preceder de '-' as datas 'BC' (Antes de Cristo) Sculo; 'S' faz preceder de '-' as datas 'BC' (Antes de Cristo) Ultimos 3 digitos do ano ou 2 ultimos ou ltimo digito do ano Ano com separador dos milhares nessa posio Ver descrio abaixo Ano por extenso (em ingls); 'S' faz preceder de '-' as datas 'BC' (Antes de Cristo) Indicador de BC/AD (Antes de Cristo / Depois de Cristo) Indicador de BC/AD com ponto Trimestre do ano Ms em nmero de 1..12 Nome do ms preenchido com espaos at 9 caracteres (Setembro) Nome do ms com trs letras (JAN, FEB, MAY,...) Semana do ano formato Oracle, semana do ano formato ISO ou semana do ms dia do ano, ms ou semana Nome do dia da semana, por extenso, preenchido com espaos at 9 caracteres Nome do dia da semana com dois caracteres Dia do calendrio Juliano; o nmero de dias desde 31 de Dezembro de 4713 A.C. Indicador de After Moon (AM) ou Post Moon (PM) Indicador de After Moon ou Post Moon com pontos Hora do dia em formato 1-12 Hora do dia em formato 0-23 Minutos Segundos Segundos decorridos desde a meia-noite Os smbolos de pontuao so reproduzidos no resultado A string reproduzida no resultado mas tem que vir entre aspas Prefixo que pode ser acrescentado aos cdigos anteriores; utilizado em MONTH ou DAY suprime o preenchimento de espaos; usado com nmeros suprime os zeros esquerda Sufixos que converte um nmero em ordinal ou por extenso; usando os dois fica nmero por extenso ordinal
Quando a mscara escrita em maisculas, o resultado aparece em maisculas. Quando a mscara escrita em minusculas, o resultado aparece em minsculas. Para mais informao consultar este link Topo
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm
6/11
14/01/13
Como funciona: Se o ano especificado for 0..49 Ano Actual Ano Actual 00..49 A data devolvida do sculo actual 50..99 A data devolvida do sculo seguinte 50..99 A data devolvida do sculo anterior ao actual A data devolvida do sculo actual
Topo
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm
7/11
14/01/13
Topo
CHR(v1)
Devolve o caracter representado por v1 no cdigo WE8DEC, ISO8859P1 ou outro.
slc cr4)a "H(9" cr9)a "H(7" cr3)a "H(8" eet h(9 s CR4), h(7 s CR9), h(8 s CR3) fo da; rm ul
Topo
NVL(v1,v2)
Se o valor de v1 for nulo, a funo devolve v2.
slc sl cm,sl1+V(om0 eet a, om a*4NLcm,) fo ep rm m;
SL A CM OM SL1+V(OM0 A*4NLCM,) ----------- ----------- --------------------- ----------- ----------80 0 120 10 10 60 30 0 270 20 15 20 50 0 100 80 27 95 460 15 15 20 10 40 190 80 25 80 390 90 25 40 330 40 30 00 400 20 50 00 700 00 10 50 0 200 10 10 10 140 50 90 5 130 30 30 00 400 20 10 30 120 80 1 rw slce 4 os eetd
Topo
GREATEST(v1,v2,v3)
Devolve o maior dos valores v1, v2 ou v3. A funo pode receber mais que 3 argumentos.
slc eet gets(,) raet12, gets(,,) raet123,
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm 8/11
14/01/13
GETS(,) RAET12 GETS(,,) RAET123 GETS(,,,) RAET1234 ----------- ----------- --------------------- ----------- ----------2 3 4 1rw slce os eetd
Topo
DECODE
A sintaxe do comando DECODE a seguinte:
DCD (, EOE v v,r 1 1 v,r 2 2 rdfut; _eal)
Se a expresso v assumir o valor v1 ento colocado o resultado r1, se v2 ento r2. Se nenhum desses valores ocorrer ento colocado r_default. Simula um comando if-then-else ou um comando CASE com sinal de igual (=). O nmero de pares de valores (v1,r1) pode variar. O valor r_default facultativo.
A expresso v pode ser o nome de uma coluna ou o resultado de uma funo; O resultado da expresso v e os valores v1, v2, ... tm que ser do mesmo tipo; Se r_default for omitido devolvido null nos casos em que a condio no satisfaa nenhuma das alternativas v1, v2, ....
slc eet gae rd, dcd (rd, eoe gae 1'5' ,1%, 2'0' ,1%, 3'%, ,8' '%)"ou" 5' Bns fo slrd; rm agae
slc eet eae nm, jb o, dcd(o, eoejb 'LR' CEK, 'mrgd d ecii' Epeao e srtro, 'NLS' AAYT, 'nlsapormdr, Aait rgaao' 'AAE' MNGR, 'etr, Gso' 'AEMN, 'eddr, SLSA' Vneo' 'RSDN' 'rsdne, PEIET, Peiet' 'NNW' UKON) "o2 Jb" fo ep rm m;
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm 9/11
14/01/13
EAE NM JB O Jb o2 ----- --------------------- ---- ----------SIH MT CEK LR Epeaod ecii mrgd e srtro ALN LE SLSA Vneo AEMN eddr WR AD SLSA Vneo AEMN eddr JNS OE MNGR Gso AAE etr MRI ATN SLSA Vneo AEMN eddr BAE LK MNGR Gso AAE etr CAK LR MNGR Gso AAE etr SOT CT AAYT Aait pormdr NLS nlsa rgaao KN IG PEIETPeiet RSDN rsdne TRE UNR SLSA Vneo AEMN eddr AAS DM CEK LR Epeaod ecii mrgd e srtro JMS AE CEK LR Epeaod ecii mrgd e srtro FR OD AAYT Aait pormdr NLS nlsa rgaao MLE ILR CEK LR Epeaod ecii mrgd e srtro 1 rw slce 4 os eetd
Topo
CASE
A instruo CASE semelhante ao DECODE mas permite comparaes com >, >=, <, <=. O exemplo abaixo mostra como substituir o DECODE do ponto anterior por um CASE:
slc eet eae nm, jb o, cs we jb'LR' ae hn o=CEK te 'mrgd d ecii' hn Epeao e srtro we jb'NLS' te 'nlsapormdr hn o=AAYT hn Aait rgaao' we jb'AAE' te 'etr hn o=MNGR hn Gso' we jb'AEMN te 'eddr hn o=SLSA' hn Vneo' we jb'RSDN'te 'rsdne hn o=PEIET hn Peiet' es le 'ur fn' Ota uo ed a "uo n s Fn" fo ep rm m;
EAE NM JB O Fn uo ----- --------------------- ---- ----------SIH MT CEK LR Epeaod ecii mrgd e srtro ALN LE SLSA Vneo AEMN eddr WR AD SLSA Vneo AEMN eddr JNS OE MNGR Gso AAE etr MRI ATN SLSA Vneo AEMN eddr BAE LK MNGR Gso AAE etr CAK LR MNGR Gso AAE etr SOT CT AAYT Aait pormdr NLS nlsa rgaao KN IG PEIETPeiet RSDN rsdne TRE UNR SLSA Vneo AEMN eddr AAS DM CEK LR Epeaod ecii mrgd e srtro JMS AE CEK LR Epeaod ecii mrgd e srtro FR OD AAYT Aait pormdr NLS nlsa rgaao MLE ILR CEK LR Epeaod ecii mrgd e srtro 1 rw slce 4 os eetd
A expresso CASE mais flexivel que DECODE pois suporta outros operadores de comparao alm de =:
slc sl eet a, cs we sl< 80 te 'ax' ae hn a 0 hn bio we sl<10 te 'i' hn a 50 hn mdo we sl<20 te 'i at' hn a 50 hn mdo lo
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm 10/11
14/01/13
'lo at'
SLSLRO A AAI ----- --------- ----80mdo 0 i 10 mdoat 60 i lo 15 mdo 20 i 27 at 95 lo 15 mdo 20 i 25 at 80 lo 25 mdoat 40 i lo 30 at 00 lo 50 at 00 lo 10 mdoat 50 i lo 10 mdo 10 i 90mdo 5 i 30 at 00 lo 10 mdo 30 i 1 rw slce 4 os eetd
Topo
Realizado por Jose Aser Lorenzo. ltima alterao em 2012-05-01
aserlorenzo.com/manSQL/Oracle/dml/funcoes/funcoesconversao.htm
11/11