Oracle의 LEFT 함수
Oracle(10g) 저장 프로시저를 찾고 있는데 다음과 같은 사항을 발견했습니다.LEFT
/RIGHT
기능.
TO_DATE(LEFT('01-Jun-1201',9))
Toad 편집기에서 이 기능을 실행할 수 없으므로 다음으로 변경해야 합니다.LPAD
TO_DATE(LPAD('01-Jun-1201',9))
저장 프로시저가 정상적으로 실행되고 있습니다.LEFT
/RIGHT
기능은 있지만 사용하면 더 빨리 실행됩니다.LPAD
/RPAD
.
있습니까?LEFT
Oracle에서 작동하며 그렇지 않다면 저장 프로시저가 정상적으로 실행되는 이유는 무엇입니까?
SELECT
SUM(DECODE(SIGN(TO_DATE(LEFT('01-Jun-12', 9)) - TO_DATE(logdate)),
-1, totaltime, 0, totaltime, 0)) AS totaltime
FROM AREA2.v_area
WHERE logdate >= TO_DATE(RIGHT('01-Jun-12', 9))
AND logdate <= TO_DATE('30-Jun-12')
왼쪽과 오른쪽은 Oracle에서 지원되지 않는 기능입니다.SQL Server, MySQL 및 일부 다른 버전의 SQL에서 사용됩니다.Oracle에서는 SUSTR 기능을 사용해야 합니다.다음은 간단한 예입니다.
LEFT ('Data', 2) = 'Da'
-> SUBSTR('Data',1,2) = 'Da'
RIGHT ('Data', 2) = 'ta'
-> SUBSTR('Data',-2,2) = 'ta'
음수는 끝에서 다시 카운트됩니다.
Oracle에는 문서화된 LEFT() 함수가 없습니다.여기서 전체 세트를 찾으십시오.
아마도 당신이 가지고 있는 것은 사용자 정의 기능일 것입니다.데이터 사전을 쿼리하여 쉽게 확인할 수 있습니다.
select * from all_objects
where object_name = 'LEFT'
그러나 저장 프로시저가 작동하는 이유와 쿼리가 작동하지 않는 이유에 대한 질문이 있습니다.한 가지 가능한 해결책은 저장 프로시저가 LEFT() 함수도 소유하는 다른 스키마에 의해 소유되는 것입니다.그들은 절차에 대한 권리는 부여했지만 의존성은 부여하지 않았습니다.저장 프로시저는 기본적으로 DEMINER 권한으로 실행되므로 사용자가 저장 프로시저의 소유자인 것처럼 실행됩니다.
이 경우 위에 나열한 데이터 사전 쿼리는 사용자가 권한을 가진 개체에 대한 행만 반환하므로 도움이 되지 않습니다.이 경우 저장 프로시저의 소유자로 쿼리를 실행하거나 DBA_를 쿼리할 권한을 가진 사용자로 연결해야 합니다.대신 객체.
LEFT는 Oracle의 함수가 아닙니다.이는 SQL Server에 익숙한 사용자가 제공한 것일 수 있습니다.
지정한 문자 수로 문자열의 왼쪽 부분을 반환합니다.
-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse
LEFT ( character_expression , integer_expression )
언급URL : https://stackoverflow.com/questions/11309247/left-function-in-oracle
'it-source' 카테고리의 다른 글
SQL Server에서 !=와 <>의 차이점 (0) | 2023.07.30 |
---|---|
Spring MVC 컨트롤러 테스트에서 서비스 클래스를 모의 실행할 수 없습니다. (0) | 2023.07.30 |
구글 크롬의 그리스몽키 스크립트에서 jQuery를 어떻게 사용할 수 있습니까? (0) | 2023.07.30 |
도커 합성을 사용하여 컨테이너에 파일 복사 (0) | 2023.07.30 |
Spring Hibernate Template 실행 메서드가 Oracle에서 카운트 쿼리에 대해 반환하는 개체 유형은 무엇입니까? (0) | 2023.07.30 |