我尝试在网上搜索这个问题的答案,但是我的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模式匹配一起使用的“或”运算符?
答案 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