MS Access中的模式匹配:是否有“或”运算符?

时间:2014-07-30 20:07:27

标签: regex ms-access

我尝试在网上搜索这个问题的答案,但是我的Google-fu让我失望了。

我有一个包含字符串表示的记录的Access数据库。该字符串的前3个字符是创建记录的366天日历日期的3位数字表示(000-366 ...是,闰日计数)。

我无法想出正确的模式匹配,以包含在一个匹配3位数子串的查询中,该子串可以在000到366之间,在这里您不会丢失有效数字。

我知道查询会是这样的:

SELECT * FROM myTable WHERE Field1 LIKE "^[0-2]## or 3[0-5]# or 36[0-6]*";

...但我在MS Access中找不到任何说“或”运算符的资源。我试过“||” (双管)和“|” (单管),两者都不起作用。

是否有可以与MS Access模式匹配一​​起使用的“或”运算符?

2 个答案:

答案 0 :(得分:2)

Access中的LIKE operator非常有限,并且不支持大部分功能更加完善的功能'正则表达式引擎提供。

相反,在WHERE子句中使用多个条件,如下所示:

SELECT * 
FROM myTable 
WHERE Field1 LIKE "[0-2]##*" OR 
      Field1 LIKE "3[0-5]#*" OR 
      Field1 LIKE "36[0-6]*"

另一个选择是简单地将前3个字符提取到字符串,将它们转换为整数并测试它们的值是否在可接受的范围内。

答案 1 :(得分:1)

为什么不拉前三个字符?

SELECT * FROM myTable WHERE CInt(Left(Field1,3)) <= 366

http://www.techonthenet.com/access/functions/datatype/cint.php

相关问题