Best and Worst Practices | generateSQL | randomSQL | RecursivelyListPrivs | validate invalid |
Find Sid Serial of Concurrent Request |
sql notes from Oracle 2 Day Developer's Guide 11g Release 1 (11.1)
Searching for Patterns in Data
Finding a Matching Data PatternSELECT first_name "First", last_name "Last", job_id "Job" FROM employees WHERE REGEXP_LIKE (job_id, '(_m[an|gr])', 'i');
SELECT first_name "First", last_name "Last"
FROM employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i');
Replacing a Data Pattern
SELECT first_name "First" ,last_name "Last" ,phone_number "Old Number" ,REGEXP_REPLACE(phone_number ,'([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})' ,'(\1) \2-\3') "New Number" FROM employees WHERE department_id = 90;
Returning a Substring
SELECT street_address , REGEXP_SUBSTR(street_address ,'[[:digit:]-]+', 1, 1) "Street Numbers" FROM locations;
Returning a Location of a Substring
SELECT street_address , REGEXP_INSTR(street_address, '[ ]+', 1, 1) "Position" FROM locations;
Returning the Number of Occurrences of a Substring
SELECT street_address , REGEXP_COUNT(street_address, ' ', 1) "Number of Spaces" FROM locations;
Truncating Numeric Data
SELECT first_name "First" ,last_name "Last" ,TRUNC(salary/30, 0) "Daily Compensation" FROM employees;
Changing the Case of Character Data
SELECT UPPER(first_name) "First upper" ,LOWER(last_name) "Last lower" ,INITCAP(email) "E-Mail" FROM employees;
Concatenating Character Data
SELECT e.first_name || ' ' || e.last_name "Name" ,l.city || ' , ' || c.country_name "Location" FROM employees e, departments d, locations l, countries c WHERE e.department_id=d.department_id AND d.location_id=l.location_id AND l.country_id=c.country_id ORDER BY last_name; The results of the query appear.
Name Location
----------------------------- --------------------------------------------
Ellen Abel Oxford, United Kingdom
Sundar Ande Oxford, United Kingdom
Mozhe Atkinson South San Francisco, United States of America
...
106 rows selected
Using Conditional Functions
SELECT first_name || ' ' || last_name "Name" ,hire_date "Date Started", salary "Current Pay", CASE WHEN hire_date < TO_DATE('01-Jan-90') THEN TRUNC(salary*1.15, 0) WHEN hire_date < TO_DATE('01-Jan-95') THEN TRUNC(salary*1.10, 0) WHEN hire_date < TO_DATE('01-Jan-00') THEN TRUNC(salary*1.05, 0) ELSE salary END "Proposed Salary" FROM employees;
Using the DECODE Function
SELECT first_name || ' ' || last_name "Name" ,job_id "Job", salary "Current Pay", DECODE(job_id ,'PU_CLERK', salary * 1.10 ,'SH_CLERK', salary * 1.15 ,'ST_CLERK', salary * 1.20 ,salary ) "Proposed Salary" FROM employees;
declare cursor invalid_objects is select object_name, object_type from user_objects where object_type in ('PACKAGE', 'PACKAGE BODY') and status = 'INVALID' and object_name like 'GL%'; begin for rec in invalid_objects loop DBMS_DDL.ALTER_COMPILE (rec.object_type ,'GL' ,rec.object_name); end loop; end; |