Escape single quote character for use in an SQLite query

database, escaping, single-quotes, sql, sqlite

Solution

Try doubling up the single quotes (many databases expect it that way), so it would be :

INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there''s');

Relevant quote from the documentation:

A string constant is formed by enclosing the string in single quotes ('). A single quote within the string can be encoded by putting two single quotes in a row - as in Pascal. C-style escapes using the backslash character are not supported because they are not standard SQL. BLOB literals are string literals containing hexadecimal data and preceded by a single "x" or "X" character. ... A literal value can also be the token "NULL".

Problem

I wrote the database schema (only one table so far), and the INSERT statements for that table in one file. Then I created the database as follows: ``` $ sqlite3 newdatabase.db SQLite version 3.4.0 Enter ".help" for instructions sqlite> .read ./schema.sql SQL error near line 16: near "s": syntax error ``` Line 16 of my file looks something like this: ``` INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s'); ``` The problem is the escape character for a single quote. I also tried double escaping the single quote (using `\\\'` instead of `\'`), but that didn't work either. What am I doing wrong?

Original source

Related problems