The DELIMIDENT Environment Variable

If the DELIMIDENT environment variable is set on the database server, you cannot use double quotation marks ( " ) to delimit literal strings. If DELIMIDENT is set, the database server interprets strings enclosed in double quotation marks as SQL identifiers, not as literal strings. If DELIMIDENT is not set, a string between double quotation marks is interpreted as a literal string, not an identifier. For further information, see Using Quotation Marks in Strings, and the description of DELIMIDENT in HCL OneDB™ Guide to SQL: Reference.

DELIMIDENT is also supported on client systems, where it can be set to y, to n, or to no setting.
  • y specifies that client applications must use single quotation mark ( ' ) symbols to delimit literal strings, and must use double quotation mark ( " ) symbols only around delimited SQL identifiers. Delimited identifiers can support a larger character set than is valid for undelimited identifiers. Letters within delimited strings or delimited identifiers are case-sensitive.
  • n specifies that client applications can use double quotation mark ( " ) or single quotation mark ( ' ) symbols to delimit character strings, but not to delimit SQL identifiers. If the database server encounters a string delimited by double or single quotation mark symbols in a context where an SQL identifier is required, it issues an error. An owner name, however, that qualifies an SQL identifier can be delimited by single quotation mark ( ' ) symbols. You must use a pair of the same quotation mark symbols to delimit a character string.
  • Specifying DELIMIDENT with no value on the client system requires client applications to use the DELIMIDENT setting that is the default for their application programming interface (API).
Client APIs of HCL OneDB use the following default DELIMIDENT settings:
  • For OLE DB and .NET, the default DELIMIDENT setting is y
  • For ESQL/C, JDBC, and ODBC, the default DELIMIDENT setting is n
  • APIs that have ESQL/C as an underlying layer, the DataBlade® API (LIBDMI), and the C++ API, behave as ESQL/C, and use 'n' as the default if no value for DELIMIDENT is specified on the client system.
Even if DELIMIDENT is set, you can use single quotation mark ( ' ) symbols to delimit authorization identifiers as the owner name component of a database object name, as in the following example:
RENAME COLUMN 'Owner'.table2.collum3 TO column3;
The general rule, however, is that when DELIMIDENT is set, the SQL parser interprets strings delimited by single quotation marks as string literals, and interprets character strings delimited by double quotation marks ( " ) as SQL identifiers.