10/31/18
1
Working with Data
L4 – 1 – Manipulating Data using SQL
• String processing
• Date Processing
• Regular Expression
10/31/18
2
• String processing
• Date Processing
• Regular Expression
String Processing
• Upper Case, Lower Case, Mixed Case
• String Padding
• Sub-strings, etc
10/31/18
3
Upper Case, Lower Case, Mixed Case
UPPERSELECT UPPER('Brendan'), UPPER('brendan') , UPPER('BrEnDan')FROM dual;
BRENDAN, BRENDAN, BRENDAN
LOWERSELECT UPPER('Brendan'), UPPER('brendan') , UPPER('BrEnDan')FROM dual;
brendan, brendan, brendan
INITCAPSELECT initcap('Brendan'), initcap('brendan'), initcap('BrEnDan')FROM dual;
Brendan, Brendan, Brendan
String Padding & Trimming
LPAD (left pad)-- 00123Select LPAD('123', 5, '0') From Dual;
-- 12345Select LPAD('1234567', 5, '0') From Dual;
-- ' Tom'Select LPAD('Tom', 10) From Dual;
-- 'To'Select LPAD('Tom', 2) From Dual;
10/31/18
4
String Padding & Trimming
RPAD (right pad)-- 12300Select RPAD('123', 5, '0') From Dual;
-- 12345Select RPAD('1234567', 5, '0') From Dual;
-- ‘Tom. 'Select RPAD('Tom', 10) From Dual;
-- 'To'Select RPAD('Tom', 2) From Dual;
String Padding & Trimming
LTRIM (left trim)-- TOMSelect LTRIM(' TOM') From dual;
-- 789Select LTRIM('000789', '0') From Dual;
-- ABC01Select LTRIM('0101ABC01', '01') From dual;
RTRIM (right trim)-- TOMSelect RTRIM('TOM ') From dual;
-- 000789Select RTRIM('00078900', '0') From Dual;
-- 0101ABCSelect RTRIM('0101ABC0101', '01') From dual;
10/31/18
5
Sub-strings
SUBSTR subtring SUBSTR( p_string, p_start_position [, p_length ] )-- 'is is'Select substr('this is a text message',3,5) Column1 from dual;-- 'is is a text message'Select substr('this is a text message',3) Column1 from dual;-- 'messa'Select substr('this is a text message',-7,5) Column1 from dual;-- 'message'Select substr('this is a text message',-7) Column1 from dual;
LENGTH-- 7Select Length('Tom Cat') As Column1 From Dual;
INSTR-- 4select instr('Brendan', 'n') from dual;-- 7select instr('Brendan', 'n', 1, 2) from dual;-- 14select Instr('Corporate Floor', 'or', 5, 2) as Column1 from dual;
Sub-strings
CONCAT
Select Concat(‘Brendan ', ‘Tierney') From dual;
Brendan Tierney
10/31/18
6
• String processing
• Date Processing
• Regular Expression
Date Processing
• Date data types
• Arithmetic on Dates
• TO_DATE
• TO_CHAR
• ADD_MONTHS
• MONTHS_BETWEEN
• LAST_DAY
• NEXT_DAY
10/31/18
7
The standard date format for input and output is DD-MON-YY e.g., 01-JAN-17 which is controlled by the value of the NLS_DATE_FORMAT parameter.
SELECT valueFROM V$NLS_PARAMETERSWHERE parameter = 'NLS_DATE_FORMAT';
SELECT sysdateFROM dual;
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
Default Date data type is:
DATE
Stores Date and Time (HH24:MI)
Be very careful what you use
10/31/18
8
Functions
TO_DATE (converts a string to a date)TO_DATE('31-10-2018', 'DD-MM-YYYY')TO_DATE('10-31-2019', 'MM-DD-YYYY'
TO_CHAR (converts a date to a stringTO_CHAR(created_date, 'DD-MOM-YYYY')
TRUNC (returns the date only, truncates the time element)TRUNC(created_date)
MONTHS_BETWEENMONTHS_BETWEEN(sysdate, emp_hire_date)
ADD_MONTHSADD_MONTHS(sysdate, 3)
Functions (continued)
LAST_DAYLAST_DAY(sysdate)
NEXT_DAY (returns the date of the next day after the dateNEXT_DAY(sysdate, 'Monday') -- returns the next Monday after todayNEXT_DAY(sysdate, 'FRIDAY') -- returns the next Friday after today
10/31/18
9
Date Addition and Substraction
Add x Days to a Datecreated_date + 1
SELECT sysdate + 10FROM dual;
Subtract x Dayscreated_date 1 1
SELECT sysdate 1 10FROM dual;
Days between dates(Sysdate – emp_hire_date)
• String processing
• Date Processing
• Regular Expression
10/31/18
10
Regular Expressions
https://oracle-base.com/articles/misc/regular-expressions-support-in-oraclehttps://docs.oracle.com/en/database/oracle/oracle-
database/12.2/adfns/regexp.html#GUID-1935FD80-A3CD-413F-BD2E-BBEFE64000B2