Embedding Single Quotes Inside a String
The trickiest part of working with string literals comes when you need to include a single quote inside a string literal (as part of the literal itself). Generally, the rule is that you write two single quotes next to each other inside a string if you want the literal to contain a single quote in that position. The following table shows the literal in one column and the resulting "internal" string in the second column:
Literal | Actual value |
'There''s no business like show business.' | There's no business like show business. |
'"Hound of the Baskervilles"' | "Hound of the Baskervilles" |
'NLS_LANGUAGE=''ENGLISH''' | NLS_LANGUAGE='ENGLISH' |
'''' | ' |
'''hello''' | 'hello' |
'''''' | '' |
Here's a summary of how to embed single quotes in a literal:
· To place a single quote inside the literal, put two single quotes together.
· To place a single quote at the beginning or end of a literal, put three single quotes together.
· To create a string literal consisting of one single quote, put four single quotes together.
· To create a string literal consisting of two single quotes together, put six single quotes together.
Two single quotes together is not the same as a double quote character. A double quote character does not have any special significance inside a string literal. It is treated the same as a letter or number.
Numeric Literals
Numeric literals can be integers or real numbers (a number that contains a fractional component). Note that PL/SQL considers the number 154.00 to be a real number, even though the fractional component is zero and the number is actually an integer. Internally, integers and reals have a different representation, and there is some small overhead involved in converting between the two.
You can also use scientific notation to specify a numeric literal. Use the letter "E" (upper- or lowercase) to multiply a number by 10 to the nth power—for example, 3.05E19, 12e-5.
Boolean Literals
Oracle provides two literals to represent Boolean values: TRUE and FALSE. These values are not strings; you should not put quotes around them. Use Boolean literals to assign values to Boolean variables, as in:
DECLARE enough_money BOOLEAN; -- Declare a Boolean variableBEGIN enough_money := FALSE; -- Assign it a valueEND;You do not, on the other hand, need to refer to the literal value when checking the value of a Boolean expression. Instead, just let that expression speak for itself, as shown in the conditional clause of the following IF statement: