TÓPICO 4 – USING CONVERSION FUNCTIONS AND CONDITIONAL EXPRESSIONS

Subtópico 4.1 – Descrever as funções de conversão (Describe various types of conversion functions that are available in SQL)
Subtópico 4.2 – Usar as funções TO_CHAR, TO_DATE e TO_NUMBER (Use the TO_CHAR, TO_NUMBER, and TO_DATE conversion functions)
Subtópico 4.3 – Aplicar expressões condicionais em cláusulas SELECT (Apply conditional expressions in a SELECT statementstatements)

Neste 4º tópico, falarei um pouco sobre funções de conversão no Oracle. No Oracle, existem 2 tipos de conversões, as explícitas e as implicitas. As explícitas são alcançadas através do uso de funções de conversão, que veremos mais adiante. Já as implícitas são realizadas internamente pelo Oracle, o que não é recomendado, visto que isso pode degradar a performance durante a execução de cláusulas SQL. Lembrando que o sobre expressões condicionais foi abordado em tópicos anteriores, logo não será abordado neste.

As principais, e mais usadas funções de conversão do Oracle são as seguintes:

  • TO_CHAR
  • TO_DATE
  • TO_NUMBER
  • TO_TIMESTAMP
  • CAST

1) TO_CHAR

Função usada para conversões que resultarão em caracteres. Sua sintaxe é a seguinte:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”VE9fQ0hBUihOMSwgW0ZPUk1BVE9dLCBbTkxTX1BBUkFNXSk=” hover_enabled=”0″]VE9fQ0hBUihOMSwgW0ZPUk1BVE9dLCBbTkxTX1BBUkFNXSk=[/et_pb_dmb_code_snippet]

Onde: N1 pode ser um tipo numérico ou de data. Essa função converte N1 em um VARCHAR2. FORMATO indica a mascara de conversão, muito usado, por exemplo, para converter datas para strings. NLS_PARAM representa o parâmetro de banco NLS_DATE_LANGUAGE que define a linguagem e formato em que será exibida a data. Abaixo temos alguns exemplos:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”IC0tIGNvbnZlcnRlIG8gbnVtZXJvIHBhcmEgdW1hIHN0cmluZwogU0VMRUNUIFRPX0NIQVIoMTIzKSBGUk9NIERVQUw7CgogLS0gY29udmVydGUgbyBuw7ptZXJvIHBhcmEgdW1hIHN0cmluZywgdXNhbmRvIHVtYSBtYXNjYXJhIAogLS0gZGUgZm9ybWF0YcOnw6NvIAogLS0gRyAtIHNlcGFyYWRvciBkZSBtaWxoYSBlIEQgLSBkZWNpbWFsCiAtLSBvIGNvbWFuZG8gYWJhaXhvIHJlc3VsdGEgZW06IDEyMi4zNzQsMDAKIFNFTEVDVCBUT19DSEFSKDEyMjM3NCwgJzk5OUc5OTlEOTknKSBGUk9NIERVQUw7CgogLS0gdXNhbmRvIG8gTkxTX1BBUkFNCiBTRUxFQ1QgVE9fQ0hBUihTWVNEQVRFLCAKICAgICAgICAgICAgICAgICdERCBNT05USCBSUlJSJywgCiAgICAgICAgICAgICAgICAnTkxTX0RBVEVfTEFOR1VBR0U9U1BBTklTSCcpIEZST00gRFVBTDsKCiAtLSBkaWEgKGVudHJlIG8gMSBlIDM2NiBkaWFzIGRvIGFubykKIFNFTEVDVCBUT19DSEFSKFNZU0RBVEUsICdEREQnKSBGUk9NIERVQUw7CgogLS0gb2J0ZW0gYXBlbmFzIGEgaG9yYSwgbWludXRvIGUgc2VndW5kbyBkYSBkYXRhIGF0dWFsCiBTRUxFQ1QgVE9fQ0hBUihTWVNEQVRFLCAnSEgyNDpNSTpTUycpIEZST00gRFVBTDs=” hover_enabled=”0″]IC0tIGNvbnZlcnRlIG8gbnVtZXJvIHBhcmEgdW1hIHN0cmluZwogU0VMRUNUIFRPX0NIQVIoMTIzKSBGUk9NIERVQUw7CgogLS0gY29udmVydGUgbyBuw7ptZXJvIHBhcmEgdW1hIHN0cmluZywgdXNhbmRvIHVtYSBtYXNjYXJhIAogLS0gZGUgZm9ybWF0YcOnw6NvIAogLS0gRyAtIHNlcGFyYWRvciBkZSBtaWxoYSBlIEQgLSBkZWNpbWFsCiAtLSBvIGNvbWFuZG8gYWJhaXhvIHJlc3VsdGEgZW06IDEyMi4zNzQsMDAKIFNFTEVDVCBUT19DSEFSKDEyMjM3NCwgJzk5OUc5OTlEOTknKSBGUk9NIERVQUw7CgogLS0gdXNhbmRvIG8gTkxTX1BBUkFNCiBTRUxFQ1QgVE9fQ0hBUihTWVNEQVRFLCAKICAgICAgICAgICAgICAgICdERCBNT05USCBSUlJSJywgCiAgICAgICAgICAgICAgICAnTkxTX0RBVEVfTEFOR1VBR0U9U1BBTklTSCcpIEZST00gRFVBTDsKCiAtLSBkaWEgKGVudHJlIG8gMSBlIDM2NiBkaWFzIGRvIGFubykKIFNFTEVDVCBUT19DSEFSKFNZU0RBVEUsICdEREQnKSBGUk9NIERVQUw7CgogLS0gb2J0ZW0gYXBlbmFzIGEgaG9yYSwgbWludXRvIGUgc2VndW5kbyBkYSBkYXRhIGF0dWFsCiBTRUxFQ1QgVE9fQ0hBUihTWVNEQVRFLCAnSEgyNDpNSTpTUycpIEZST00gRFVBTDs=[/et_pb_dmb_code_snippet]

2) TO_DATE

Função usada para conversões que resultarão em datas. Sua sintaxe é:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”VE9fREFURShEMSwgW0ZPUk1BVE9dLCBbTkxTX1BBUkFNXSk=” hover_enabled=”0″]VE9fREFURShEMSwgW0ZPUk1BVE9dLCBbTkxTX1BBUkFNXSk=[/et_pb_dmb_code_snippet]

Onde: D1 é uma string que será convertida para um tipo de dados DATE, usando o formato FORMATO. NLS_PARAM representa o parâmetro de banco NLS_DATE_LANGUAGE que define a linguagem e formato em que será exibida a data. Abaixo é possível ver alguns exemplos:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”LS0gZm9ybWF0YSBhIGRhdGEgYXR1YWwgbm8gcGFkcsOjbyBkaWEvbcOqcy9hbm8gKDQgZMOtZ2l0b3MpCiBTRUxFQ1QgVE9fREFURShTWVNEQVRFLCAnREQvTU0vUlJSUicpIEZST00gRFVBTDsKCi0tIGZvcm1hdGEgYSBkYXRhIGF0dWFsIG5vIHBhZHLDo28gZGlhL23DqnMvYW5vICg0IGTDrWdpdG9zKSAKLS0gaG9yYSAoZm9ybWF0byAyNCBob3Jhcyk6bWludXRvOnNlZ3VuZG8KIFNFTEVDVCBUT19EQVRFKFNZU0RBVEUsICdERC9NTS9SUlJSIEhIMjQ6TUk6U1MnKSBGUk9NIERVQUw7CgotLSBmb3JtYXRhIGEgZGF0YSBhdHVhbCBubyBwYWRyw6NvIGRpYS9tw6pzL2FubyAoMiBkw61naXRvcykKIFNFTEVDVCBUT19EQVRFKFNZU0RBVEUsICdERC9NTS9ZWScpIEZST00gRFVBTDs=” hover_enabled=”0″]LS0gZm9ybWF0YSBhIGRhdGEgYXR1YWwgbm8gcGFkcsOjbyBkaWEvbcOqcy9hbm8gKDQgZMOtZ2l0b3MpCiBTRUxFQ1QgVE9fREFURShTWVNEQVRFLCAnREQvTU0vUlJSUicpIEZST00gRFVBTDsKCi0tIGZvcm1hdGEgYSBkYXRhIGF0dWFsIG5vIHBhZHLDo28gZGlhL23DqnMvYW5vICg0IGTDrWdpdG9zKSAKLS0gaG9yYSAoZm9ybWF0byAyNCBob3Jhcyk6bWludXRvOnNlZ3VuZG8KIFNFTEVDVCBUT19EQVRFKFNZU0RBVEUsICdERC9NTS9SUlJSIEhIMjQ6TUk6U1MnKSBGUk9NIERVQUw7CgotLSBmb3JtYXRhIGEgZGF0YSBhdHVhbCBubyBwYWRyw6NvIGRpYS9tw6pzL2FubyAoMiBkw61naXRvcykKIFNFTEVDVCBUT19EQVRFKFNZU0RBVEUsICdERC9NTS9ZWScpIEZST00gRFVBTDs=[/et_pb_dmb_code_snippet]

É importante atentar para o uso do parâmetro NLS_DATE_FORMAT que define a mascara padrão de data/hora para o banco ou sessão. A seguir estou definindo a mascara apenas para a minha sessão:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”IEFMVEVSIFNFU1NJT04gU0VUIE5MU19EQVRFX0ZPUk1BVD0nREQvTU0vWVlZWSBISDI0Ok1JOlNTJzs=” hover_enabled=”0″]IEFMVEVSIFNFU1NJT04gU0VUIE5MU19EQVRFX0ZPUk1BVD0nREQvTU0vWVlZWSBISDI0Ok1JOlNTJzs=[/et_pb_dmb_code_snippet]

3) TO_NUMBER

Função usada para conversões de dados do tipo CHAR/VARCHAR2 que resultarão em números (dados tipo NUMBER. Sua sintaxe é:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”VE9fTlVNQkVSKEUxLCBbRk9STUFUT10sIFtOTFNfUEFSQU1dKQ==” hover_enabled=”0″]VE9fTlVNQkVSKEUxLCBbRk9STUFUT10sIFtOTFNfUEFSQU1dKQ==[/et_pb_dmb_code_snippet]

Onde: E1 é a string a ser convertida. FORMATO indica o formado do número e NLS_PARAM representa o parâmetro de banco NLS_DATE_LANGUAGE que define a linguagem e formato em que será exibida a data. Abaixo é possível ver alguns exemplos:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”LS0gY29udmVyc8OjbyBzaW1wbGVzLiByZXBhcmVtIHF1ZSBvIG7Dum1lcm8gZXN0w6EgZW10cmUgCi0tIGFzcGFzLCBpbmRpY2FuZG8gc2VyIHVtYSBzdHJpbmcKIFNFTEVDVCBUT19OVU1CRVIoJzEyMzQ1NicpIEZST00gRFVBTA==” hover_enabled=”0″]LS0gY29udmVyc8OjbyBzaW1wbGVzLiByZXBhcmVtIHF1ZSBvIG7Dum1lcm8gZXN0w6EgZW10cmUgCi0tIGFzcGFzLCBpbmRpY2FuZG8gc2VyIHVtYSBzdHJpbmcKIFNFTEVDVCBUT19OVU1CRVIoJzEyMzQ1NicpIEZST00gRFVBTA==[/et_pb_dmb_code_snippet]

4) TO_TIMESTAMP

Função usada para converter e formatar determinada string para o tipo de dados TIMESTAMP. Lembrando que o tipo de dados TIMESTAMP difere do DATE apenas na exibição de milisegundos (até 9). Sua sintaxe é:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”VE9fVElNRVNUQU1QKEQxLCBbRk9STUFUT10sIFtOTFNfUEFSQU1dKQ==” hover_enabled=”0″]VE9fVElNRVNUQU1QKEQxLCBbRk9STUFUT10sIFtOTFNfUEFSQU1dKQ==[/et_pb_dmb_code_snippet]

Onde: D1 é a string a ser convertida. FORMATO é a mascara de formatação e NLS_PARAM representa o parâmetro de banco NLS_DATE_LANGUAGE que define a linguagem e formato em que será exibida a data. Abaixo é possível ver alguns exemplos:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”LS0gRkYgaW5kaWNhIG9zIG1pbGlzZWd1bmRvcwogU0VMRUNUIFRPX1RJTUVTVEFNUCgnMDEvMTEvMjAxMCAxODowMDowMDozMjU0NjMnLCAKICAgICAgICAgICAgICAgICAgICAgJ0REL01NL1JSUlIgSEgyNDpNSTpTUzpGRicpIEZST00gRFVBTDs=” hover_enabled=”0″]LS0gRkYgaW5kaWNhIG9zIG1pbGlzZWd1bmRvcwogU0VMRUNUIFRPX1RJTUVTVEFNUCgnMDEvMTEvMjAxMCAxODowMDowMDozMjU0NjMnLCAKICAgICAgICAgICAgICAgICAgICAgJ0REL01NL1JSUlIgSEgyNDpNSTpTUzpGRicpIEZST00gRFVBTDs=[/et_pb_dmb_code_snippet]

5) CAST

Função que realiza diversos tipos de conversões. Sua sintaxe é:

CAST(E1 AS D1)

Onde E1 é o dado a ser convertido e D1 é o tipo de dados resultante da conversão. Abaixo é possível ver alguns exemplos:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”LS0gY29udmVydGUgMTAwIChudW1iZXIpIHBhcmEgdW0gdmFyY2hhcjIKU0VMRUNUIENBU1QoMTAwIEFTIFZBUkNIQVIyKDMpKSBGUk9NIERVQUw7CgotLSBjb252ZXJ0ZSAxMDAgKHZhcmNoYXIyKSBwYXJhIHVtIG51bWJlcgogU0VMRUNUIENBU1QoJzEwMCcgQVMgTlVNQkVSKSBGUk9NIERVQUw7CgotLSBjb252ZXJ0ZSB1bSBkYXRlIHBhcmEgbyB0aXBvIHRpbWVzdGFtcCwgY29tIHByZWNpc8OjbyBkZSAKLS0gOCBtaWxpc2VndW5kb3MKIFNFTEVDVCBDQVNUKFNZU0RBVEUgQVMgVElNRVNUQU1QKDgpKSBGUk9NIERVQUw7″ hover_enabled=”0″]LS0gY29udmVydGUgMTAwIChudW1iZXIpIHBhcmEgdW0gdmFyY2hhcjIKU0VMRUNUIENBU1QoMTAwIEFTIFZBUkNIQVIyKDMpKSBGUk9NIERVQUw7CgotLSBjb252ZXJ0ZSAxMDAgKHZhcmNoYXIyKSBwYXJhIHVtIG51bWJlcgogU0VMRUNUIENBU1QoJzEwMCcgQVMgTlVNQkVSKSBGUk9NIERVQUw7CgotLSBjb252ZXJ0ZSB1bSBkYXRlIHBhcmEgbyB0aXBvIHRpbWVzdGFtcCwgY29tIHByZWNpc8OjbyBkZSAKLS0gOCBtaWxpc2VndW5kb3MKIFNFTEVDVCBDQVNUKFNZU0RBVEUgQVMgVElNRVNUQU1QKDgpKSBGUk9NIERVQUw7[/et_pb_dmb_code_snippet]

É isso por enquanto. Lembro-lhes que a prática levará a uma maior intimidade e consequentemente facilidade em trabalhar com essas funções, de forma bem mais complexa da que foi abordada nos exemplos acima. Até mais. Keep Querying.