If you use a keyword (also called a reserved word) in an identifier you must enclose it in double quotes when referencing it in a SQL statement. Many, but not all, of the words that appear in SQL statements are keywords.
add | all | alter | and |
any | as | asc | begin |
between | binary | break | by |
call | cascade | cast | char |
char_convert | character | check | checkpoint |
close | comment | commit | connect |
constraint | continue | convert | create |
cross | current | cursor | date |
dba | dbspace | deallocate | dec |
decimal | declare | default | delete |
desc | distinct | do | double |
drop | else | elseif | encrypted |
end | endif | escape | exception |
exec | execute | exists | fetch |
first | float | for | foreign |
from | full | goto | grant |
group | having | holdlock | identified |
if | in | index | inner |
inout | insert | instead | int |
integer | into | is | isolation |
join | key | left | like |
lock | long | match | membership |
message | mode | modify | named |
natural | noholdlock | not | null |
numeric | of | off | on |
open | option | options | or |
order | others | out | outer |
passthrough | precision | prepare | primary |
privileges | proc | procedure | |
raiserror | readtext | real | reference |
references | release | remote | rename |
resource | restrict | return | revoke |
right | rollback | save | savepoint |
schedule | select | set | share |
smallint | some | sqlcode | sqlstate |
start | stop | subtrans | subtransaction |
synchronize | syntax_error | table | temporary |
then | time | tinyint | to |
tran | trigger | truncate | tsequal |
union | unique | unknown | update |
user | using | validate | values |
varbinary | varchar | variable | varying |
view | when | where | while |
with | work | writetext |
If you are using Embedded SQL, the database library function sql_needs_quotes can be used to determine if a string requires quotation marks to make it an identifier because it is a reserved word or contains invalid identifier characters.