segunda-feira, 17 de abril de 2017
Oracle - Decimal\Horas
DECIMAL/HORAS
select 690/60,
trunc((690/60),0),
((690/60)-(trunc((690/60),0)))*60
from dual
SELECT HORA,
TO_NUMBER(SUBSTR(HORA,1,INSTR(HORA,':')-1)) HORA,
TO_NUMBER(SUBSTR(HORA,(INSTR(HORA,':')+1),2)) MINUTO,
(TO_NUMBER(SUBSTR(HORA,1,INSTR(HORA,':')-1)) +
TO_NUMBER(SUBSTR(HORA,(INSTR(HORA,':')+1),2))) AS VLRDECIMAL
FROM ZPFFINANC_IMP
Oracle - INSTR (PATINDEX - SQL Server)
Oracle - UPDATE com FROM
-- ATUALIZA CAMPO DE
HORARIO (LEGADO)
UPDATE ZIMPFUNC_DEPARA_MATER A SET
A.CODHORARIOLEG = ( SELECT
COD_HORARIO_061
FROM ZIMPFUNCIONARIOS_MATER B
WHERE B.CHAPA_001 = A.CODFUNC);
-- ATUALIZA CAMPO DE
HORARIO (RM)
UPDATE ZIMPFUNC_DEPARA_MATER A SET
CODHORARIORM = ( SELECT CODLABORE
FROM ZIMPFUNC_HORARIOS B
WHERE upper(substr(descr_dominio,2,length(descr_dominio))) =
upper(a.codhorarioleg));
Oracle - SELECT * + campos
SELECT X.*,
5 AS CODCOLIGADA
FROM
ZIMPFUNCIONARIOS_MATER X
SELECT 5 AS CODCOLIGADA,
X.*
FROM
ZIMPFUNCIONARIOS_MATER X
Sempre apelidar a
tabela, para que esta forma de SELECT + campos adicionais funcione
Oracle - Upper, Lower, Initcap, Replace, CHR e ASCII
Upper, Lower,
Initcap, Replace, CHR e ASCII
SELECT UPPER('teste') AS MAIUSCULO,
LOWER(UPPER('teste')) MINUSCULO,
INITCAP('teste') PRIMEIRA_MAISUCULA,
REPLACE(('TESTE TAB
TAB'),CHR(32),' ') AS RETIRA_TAB,
'FUMIO'||CHR(32)||'TESTE' AS
ADICIONA_TAB_TEXTO,
ASCII(' ') VERIFICA_CODIGO_ASC_TAB
from dual
Oracle - Translate\Acentuação
Oracle|MSSQL - ROWNUM\TOP
No
banco dados SQL Server (MSSQL), é comum criarmos sentenças com o comando TOP,
para facilitar as nossas pesquisas e análises.
Ex: SELECT TOP 5 *
FROM GCOLIGADA
Neste
comando, ele listará os 5 primeiros registros da tabela GCOLIGADA.
No
Oracle, não temos o comando TOP, com o mesmo resultado/funcionalidade, então
podemos usar o comando ROWNUM, que funcionará da mesma forma que o comando TOP
(MSSQL):
Ex:
SELECT *
FROM GCOLIGADA
WHERE ROWNUM <= 5
Oracle - Procedures Válidas?
SELECT OBJECT_NAME,
STATUS
FROM DBA_OBJECTS
WHERE OBJECT_TYPE =
’PROCEDURE’
AND STATUS =
‘INVALID’
Oracle - Function (Retira Acentuação)
Criei
uma função para alterar os caracteres acentuados de um texto/string,
facilitando assim algumas consultas/pesquisas que temos de realizar, uma vez
que o Oracle diferencia caracteres acentuados dos não acentuados.
O nome
da função é: FNC_RETIRA_ACENTUACAO, e a sua utilização é feita da seguinte
forma:
FNC_RETIRA_ACENTUACAO(
“Texto a ser alterado”)
Ex:
SELECT FNC_RETIRA_ACENTUACAO('ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü')
FROM DUAL;
Resultado: ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu
CREATE OR REPLACE
FUNCTION FNC_RETIRA_ACENTUACAO(V_TEXTO_I IN VARCHAR2)
RETURN VARCHAR2
IS V_TEXTO_O
VARCHAR2(100);
BEGIN
V_TEXTO_O :=
translate(V_TEXTO_I,'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü',
'ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu');
RETURN (V_TEXTO_O);
END;
SELECT
FNC_RETIRA_ACENTUACAO('ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü')
FROM DUAL
Assinar:
Postagens (Atom)