什么是SQLite3特殊字符?

时间:2016-02-22 07:05:55

标签: sql sqlite

我想使用自制的占位符语法在我的C ++程序中动态创建SQL语句。但是,有一些特殊的SQL特定或SQLite3特定的字符,我不应该使用它们。你能帮我写一个这样的清单吗?我的目标是找到一个不能出现在SQL语句中的字符。我主要使用SQLite3,但将来可能会改变。

这是我到目前为止所发现的:

  • LIKE:%_(在字符串文字中)
  • GLOB :? *(在字符串文字内)
  • SQLite3参数绑定:? :@ $
  • 声明:; ,
  • 字符串文字:'
  • 操作:+ - * /> < =〜& | !

可能的候选人包括:

  • ^
  • /
  • \

2 个答案:

答案 0 :(得分:2)

所有字符都可以出现在字符串文字中。

答案 1 :(得分:0)

SQL语句中允许哪些结构部分是DBMS / dialect特定的;对于SQLite来说,一个很好的起点就在这里:http://www.sqlite.org/lang_expr.html

如果DB,表或字段名称包含特殊字符,则它们必须为escaped/quoted,之前CL已经解决了字符串文字,其余为keywords,运算符,数值和有效指示符(名称和函数),仅限于ASCII字符集的子集。所以其他一切都是无效的,但如果您的SQL方言将反斜杠定义为(非标准)运算符,则它是有效的。