MS Access 2013 SQL通配符,类似于正则表达式的语法

时间:2018-02-08 00:22:02

标签: sql regex ms-access-2013

以下链接似乎表明" [a-zA-Z] *"应该只匹配零个或多个字母字符。

https://msdn.microsoft.com/EN-US/library/office/ff192499.aspx

然而,在测试中它似乎返回了我不期望的结果;例如,包含空格。

Select * from table1 where name like 'r[a-zA-Z]* e[a-zA-Z]*'

只应返回名字字段中连续的单词,其中第一个单词以r开头,没有或多个字母字符用空格分隔,第二个单词以e开头。

但执行此语句将返回以下内容(结果集中的一些示例)

  • 红色长老(正确)
  • 红色Myzomela eruthrina(不正确)

有没有办法让搜索完全按照我的期望返回?我不理解的是什么?

1 个答案:

答案 0 :(得分:1)

这不是正则表达式。 *不适用于[a-zA-Z]

r[a-zA-Z]* e[a-zA-Z]*被解释为:

  • r
  • 后跟任何字符a到z
  • 后跟零个或多个字符
  • 后跟空格
  • 后跟e
  • 后跟任何字符a到z
  • 后跟零个或多个字符

不幸的是你必须使用这样的东西:

Select * from table1 where name like "r*" and mid(name , instr(name , " ") + 1, 1) = "e"

这不是很漂亮,也不是你想要的。