[sql] LEFT function in Oracle

I am looking in an Oracle (10g) stored procedure and come across the following LEFT/RIGHTfunction.

TO_DATE(LEFT('01-Jun-1201',9))

In the Toad editor, I am not able to run this function and have to change it to LPAD

TO_DATE(LPAD('01-Jun-1201',9))

The stored procedure is running fine with LEFT/RIGHT function but it runs faster if I use LPAD/RPAD.

Is there any LEFT Function in Oracle and if not then why is the stored procedure running fine?

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')

This question is related to sql oracle

The answer is


LEFT is not a function in Oracle. This probably came from someone familiar with SQL Server:

Returns the left part of a character string with the specified number of characters.

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
LEFT ( character_expression , integer_expression )  

I've discovered that LEFT and RIGHT are not supported functions in Oracle. They are used in SQL Server, MySQL, and some other versions of SQL. In Oracle, you need to use the SUBSTR function. Here are simple examples:

LEFT ('Data', 2) = 'Da'

->   SUBSTR('Data',1,2) = 'Da'

RIGHT ('Data', 2) = 'ta'

->   SUBSTR('Data',-2,2) = 'ta'

Notice that a negative number counts back from the end.