我试着在网上搜索这个问题的答案,但是我的Google-fu让我失望了。
我有一个Access数据库,其中包含一个字符串表示的记录。该字符串的前3个字符是创建记录的366天日历日期的3位数字表示(000-366.是的,闰日计数)。
我很难找到正确的模式匹配,以便在一个匹配3位数子字符串的查询中包含,该子字符串可以在1000到366之间,在其中您不会丢失重要的数字。
我知道查询应该是这样的:
SELECT * FROM myTable WHERE Field1 LIKE "^[0-2]## or 3[0-5]# or 36[0-6]*";
...but我找不到任何资源,在MS Access中,说明“或”操作符是什么。我试过“双管”(双管)和“双管”(单管),两者都不起作用。
是否有“或”操作符可以与MS访问模式匹配一起使用?
发布于 2014-07-30 22:20:16
为什么不直接拉前三个角色呢?
SELECT * FROM myTable WHERE CInt(Left(Field1,3)) <= 366
http://www.techonthenet.com/access/functions/datatype/cint.php
发布于 2014-07-30 20:10:25
Access中的 operator非常有限,并且不支持大多数更“成熟”的正则表达式引擎提供的特性。
相反,在WHERE
子句中使用以下多个条件:
SELECT *
FROM myTable
WHERE Field1 LIKE "[0-2]##*" OR
Field1 LIKE "3[0-5]#*" OR
Field1 LIKE "36[0-6]*"
另一种选择是简单地将前3个字符提取为字符串,将它们转换为整数,并测试它们的值是否在可接受的范围内。
https://stackoverflow.com/questions/25045965
复制相似问题