SQL 不在括号中的字符的语法

SQL syntax for characters not in brackets

我正在使用 ODBC 访问 Microsoft Access 数据库。

根据 the w3schools SQL tutorial,“任何不在括号中的字符”的 ANSI-92 通配符应为 ^。但是,他们自己的示例使用了 ANSI-89 通配符 !.

MSDN documentation也很迷惑。 ANSI-92 部分显示 ^ 字符,但它旁边的示例实际使用 !。这看起来像是一个错误,我已填写反馈以通知 Microsoft。

正确的“任何不在括号中的字符”语法是什么?这是否适用于多个数据库和访问技术(DAO、ODBC、OleDB、MySQL 等)?

无法跨数据库执行此操作。 SQL 支持恰好有两个通配符的 LIKE 语法:

  • % 匹配零个或多个字符。
  • _ 正好匹配一个字符。

也可以输入 \ 字符来转义通配符。

此外,SQL 服务器支持字符 类,如教程中所述(这似乎是准确的)。唯一想到的其他数据库是 Sybase(具有相同的代码库)。 MS Access 只有一个带有特殊字符的混蛋版本。它从不支持这方面的 SQL 标准。

大多数其他数据库实现了完整的正则表达式支持(YAY!),但它们的语法因数据库而异。所以,没有一种独立于数据库的方式来做你想做的事。