是否有SQL标准来转义列名?如果不行,对mysql和sqlite有效吗?它也适用于sqlserver吗?
是否有SQL标准来转义列名?如果不行,对mysql和sqlite有效吗?它也适用于sqlserver吗?
Answers:
根据SQLite,
'foo'
是一个SQL字符串"foo"
是一个SQL标识符(列/表/等)[foo]
是MS SQL中的标识符`foo`
是MySQL中的标识符对于限定名称,语法为:"t"."foo"
或[t].[foo]
,等等。
ANSI_QUOTES
启用该选项时,MySQL支持标准的“ foo” 。
WHERE "nonexistent_column" = 0
和SQLite只是快乐地执行它假装我"nonexistent_column"
是一个字符串。完全限定该名称,因为它"my_table"."nonexistent_column"
迫使sqlite严格遵守行为。
对于MS SQL,请使用[和]
SELECT [COLUMN], [COLUMN 2] FROM [TABLE]
对于DBASE / DBF,使用[
和]
SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE]
'foo'
如果上下文不允许使用字符串,则将SQLite 解释为标识符;如果上下文不允许使用标识符,则可以将SQLite"foo"
解释为字符串,但请注意,将来可能会删除此行为版本。