赞
踩
工作中遇到一些跟模糊查询有关的问题,其中一个是Access中的大小写敏感问题,找了很多资源,终于找到了所需。 Access中对大小写是不敏感的,特别是当你用like去查询的时候发现要它敏感真的很难,在寻找答案的过程了,有很痛同仁出了很多注意,有些我把它记录下了,并不一定对现在的问题有用,但以后或许能在别的地方用上,在这对这些工作者表示感谢。 先说我的解决方法吧,用到的函数是Instr,而不是我们通常用的like sqlstr ="select * from 表名 where Instr(1, 字段名, 要查询的子符串, 0) > 0" 例 sqlstr = "select * from user_msg where Instr(1, userName, 'aA', 0) > 0" 找出所有用户名中带有'aA'的资料,这里查用的是二进制比较,所以大小写是敏感的。这个函数在我收集的资料中有详细的解释和例子 一、SQL查询区分大小写方法
InStr 函数 适用于: Microsoft Office Access 2007 全部显示 返回变量型(长型),指定一个字符串在另一个字符串中首次出现的位置。 请参阅一些示例 语法 InStr([start, ] string1, string2 [, compare ] ) InStr 函数的语法包含以下参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。): 参数 说明 start 可选。数值表达式 (数字表达式:计算结果为数字的任何表达式。表达式可以是变量、常数、函数和运算符的任意组合。),设置每次搜索的开始位置。如果省略,则从第一个字符位置开始搜索。如果 start 包含 Null (Null:可以在字段中输入或用于表达式和查询,以标明丢失或未知的数据。在 Visual Basic 中,Null 关键字表示 Null 值。有些字段(如主键字段)不可以包含 Null 值。),将产生错误。如果指定 compare参数,则必须指定 start 参数。 string1 必选。要在其中进行搜索的字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。)。 string2 必选。被搜索的字符串表达式。 compare 可选。指定字符串比较 (字符串比较:使用操作符确定某一字符串是否大于或等于另一字符串。使用 Option Compare 语句指定是进行二进制(区分大小写)比较,还是进行文字(不区分大小写)比较。)类型。如果 compare 为 Null,将产生错误。如果省略 compare,则比较类型由 Option Compare 设置决定。请指定有效的 LCID(区域设置 ID),以在比较中使用区域设置特定的规则。
设置 compare 参数设置如下: 常量 值 说明 vbUseCompareOption -1 使用 Option Compare 语句的设置执行比较。 vbBinaryCompare 0 执行二进制比较。 vbTextCompare 1 执行文本比较。 vbDatabaseCompare 2 Microsoft Office Access 2007 专用。根据数据库中的信息执行比较。
返回值 如果 则 InStr 返回 string1 长度为零 0 string1 为 Null Null string2 长度为零 start string2 为 Null Null 未找到 string2 0 在 string1 中找到 string2 找到匹配字符串的位置 start > string2 0
注解 如果字符串中包含字节数据,请使用 InStrB 函数。InStrB 不返回一个字符串在另一个字符串中第一次出现的字符位置,而是返回字节位置。 示例 在表达式中使用 InStr 函数 在任何可以使用表达式的地方都可以使用 InStr。例如,如果想要找出包含 IP 地址的字段(名为“IP 地址(IPAddress)”)中第一个句号 (.) 的位置,可以使用 InStr 进行查找,如下所示: InStr(1,[IPAddress],".") InStr 函数检查“IP 地址”字段中的每个值,并返回第一个句号的位置。因此,如果 IP 地址的第一个部分为 10.,该函数就会返回值 3。 然后就可以使用对 InStr 函数的输出执行操作的其他函数提取 IP 地址的第一个句号前的部分,如下所示: Left([IPAddress],(InStr(1,[IPAddress],".")-1)) 在此示例中,InStr(1,[IPAddress],".") 返回第一个句号的位置。将该值减 1 即可确定第一个句号前存在多少个字符,在本例中为 2。然后 Left 函数则会在“IP 地址”字段左边提取该数目的字符,并返回值 10。 在 VBA 代码中使用 InStr 注释 以下示例演示了此功能在 Visual Basic for Applications (VBA) 模块中的使用。有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个词条。 以下示例使用 InStr 函数返回一个字符串在另一个字符串中首次出现的位置。 Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" ' String to search in. SearchChar = "P" ' Search for "P".
' A textual comparison starting at position 4. Returns 6. MyPos = Instr(4, SearchString, SearchChar, 1)
' A binary comparison starting at position 1. Returns 9. MyPos = Instr(1, SearchString, SearchChar, 0)
' Comparison is binary by default ' (last argument is omitted). MyPos = Instr(SearchString, SearchChar) ' Returns 9.
MyPos = Instr(1, SearchString, "W") ' Returns 0. |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。