How to enter a single quotation mark in Oracle?

tlananthu's picture

Answer: Although this may be a undervalued question, I got many a search for my blog with this question. This is where I wanted to address this question elaborately or rather in multiple ways.

Method 1


The most simple and most used way is to use a single quotation mark with two single quotation marks in both sides.

SELECT 'test single quote''' from dual;

The output of the above statement would be:
test single quote'

Simply stating you require an additional single quote character to print a single quote character. That is if you put two single quote characters Oracle will print one. The first one acts like an escape character.

This is the simplest way to print single quotation marks in Oracle. But it will get complex when you have to print a set of quotation marks instead of just one. In this situation the following method works fine. But it requires some more typing labour.

Method 2


I like this method personally because it is easy to read and less complex to understand. I append a single quote character either from a variable or use the CHR() function to insert the single quote character.

The same example inside PL/SQL I will use like following:

DECLARE
  l_single_quote CHAR(1) := '''';
  l_output VARCHAR2(20);
BEGIN
  SELECT 'test single quote'||l_single_quote
  INTO l_output FROM dual;
  DBMS_OUTPUT.PUT_LINE(l_single_quote);
END;

The output above is same as the Method 1.

Now my favourite while in SQL is CHR(39) function. This is what I would have used personally:

SELECT 'test single quote'||CHR(39) FROM dual;

The output is same in all the cases.

Now don't ask me any other methods, when I come to know of any other methods I will share here.

Regards,
Anantha
http://askanantha.blogspot.com

Comments

By the following method also we can get the required output

SELECT q'[test single quote']' from dual;

Hi Kamal Kannan,
The Method 3 provided by you is new feature provided in Oracle 10g.
Its called the quote operator (quote delimiter).
Regards,
Vijay Mahawar (OCA - Developer Track)

SQL> SELECT '''' FROM DUAL;

'
-
'

Regards,
Abhi

select 'this is a quote'||'''' from dual;

O/P-> this is a quote'

select 'this is a quote'||'''''' from dual;

O/P-> this is a quote''

select 'this is a quote'||'$$' from dual;

O/P-> this is a quote$$

select 'this is a quote'||'$$$' from dual;

O/P-> this is a quote$$$

Kindly explain these with reference to escape characters:

select 'this is a quote'||'''' from dual;
select 'this is a quote'||'''''' from dual;
select 'this is a quote'||'$$' from dual;
select 'this is a quote'||'$$$' from dual;

Regards,
Sana