Ask the Expert

Quotes in SQL

Question 1:

I am currently reading Transact-SQL by Bennett McEwan. I was trying to do a query on the pubs test database...

select "Hello, my name is ", fname
from employee

No matter how I word the query it keeps bombing out and saying...

Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'hello, my name is'.

Is the command structure for "Constant Strings" different for SQL 2000?

Question 2:

Let's say I have a table named "STAFF". One of the fields is "NAME". Now, if I have a staff name "Mohd Ja'far" then how can I retrieve this data using SQL. The query:

SELECT * FROM STAFF 
WHERE NAME LIKE '%Ja'fa%'

is not working because the ' in the name.


    Requires Free Membership to View

A number of questions seem to come up again and again here at SearchDatabase.com. Removing duplicate rows and finding the "top N" rows are probably the most frequently asked questions, and well worth the effort to explore, because of the implications on database design, application controls, data integrity, user interfaces, and so on.

Questions that deal with simple things like quotes in SQL are also quite common, and most of the time we do not answer them. They're like a rite of passage into the wonderful world of self-reliance, since they can usually be resolved with a healthy dose of RTFM.

Nevertheless, we've all encountered manuals where the single item you're trying to find is buried if it's there at all. So today, we'll answer these questions on quotes in SQL.

In the first question, SQL Server expects the doublequote to be used to delimit a column name that otherwise would cause a syntax error, because of embedded spaces or other characters. Literal strings must be enclosed in single quotes. Thus, the correct syntax is:

select 'Hello, my name is ', fname
from employee

An example of the doublequote used to delimit a column name is:

select Sum10 - Sum09 as "Oct/Sept Increase"
from sales

Note that SQL Server can also use square brackets for this purpose:

select Sum10 - Sum09 as [Oct/Sept Increase]
from sales

In the second question, the problem is that the literal string needs to contain a single quote. This is achieved by coding two single quotes in succession, and this works in all databases:

WHERE NAME LIKE '%Ja''fa%'

This was first published in October 2003

There are Comments. Add yours.

 
TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: