Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

通配符问题请教

陈氏老头  发表于:2008-12-22 15:00:29  
复制

Dim rs As New adodb.Recordset

sql = "SELECT 机构号,客户号,借款人名称,贷款余额,贷款发放日期,到期日期,四级形态,查询日期,客户地址 FROM 贷款明细查询 WHERE 机构号 like '*" & 机构号 & "*'"

List5.RowSource = sql

 

rs.Open sql, CurrentProject.Connection, 3, 3

这个sql作为在列表框list5能够显示数据集,而用rs.open语句打开,则数据集为零,把“*”换成“%”号则数据集不为0。为什么?

 

 

这个通配符问题困惑我好久了,希望大家能帮帮我。

 

Top
小龙女 发表于:2008-12-22 15:27:32
在sql代码中用记录集时,% 相当于 *,而不识别*

ACMAIN.CHM 发表于:2008-12-22 15:41:17

当能过ADO访问ACCESS的时候是通过jet-sql来实现的,JET-SQL遵循了SQL的标准。通配符是 % 而不是 *

 

微软总是喜欢自己搞出点和别人不一样的东西。

另外多看一下帮助会知道一些小的东西。

 

 

在字符串比较中使用通配符

内含的模式匹配为字符串比较提供了一个多用途工具。下表显示了你可以通过 Like 运算符 使用的通配符和它们匹配的数字或字符串的数目。

样式中的字符 表达式中的匹配
? _(下划线) 任何单一字符
* or % 零个或多个字符
# 任何单一数字(0 — 9)
[charlist] 任何在字符表中的单一字符
[!charlist] 任何不在字符表中的单一字符

可用括在括号 ([ ]) 中的一组字符(字符表)来匹配表达式中任何的单一字符,而且字符表中几乎可以包含 ANSI 字符集中的任何字符,包括数字。事实上,特殊字符,如左括号 ([ )、问号(?)、井字号(#)和星号(*), 当它们括在括号内时,可以直接和它们自己匹配。一组字符内的右括号 ( ]) 不能匹配它自己,但是如果它是一组之外的单一字符,就能用来匹配。

除了括在括号内的字符的简单表列,字符表可以指定一字符范围,用连字符号 (-) 来隔开范围的上下界。例如,在样式 中使用 [A-Z] ,可在包含从 A 到 Z 的任何大写字母的表达式内,找出相应的字符位置。 可以在括号之中包含多个范围且不需要在范围间划上界线。例如,[a-zA-Z0-9] 指任何符合文数值的字符。

一定要注意,仅当使用 Microsoft® Jet 4.X 版和 Microsoft OLE DB Provider for Jet 时,ANSI SQL 通配符 (%) 和 (_) 才可用。若使用 Microsoft Access 或 DAO,则将其视为原义字符。

样式匹配的重要的规则还有:

  • 字符表开头的惊叹号(!),意味着在表达式中寻找那些不包括在字符表中的字符。若惊叹号(!)在括号之外,它只匹配它自己。
  • 如果连字符(-)在字符表的开头(如果有惊叹号,则紧跟在惊叹号之后),或在字符表的末尾,则它匹配连字符(-)自己。否则它被视为 ANSI 字符范围的标识。
  • 当您指定一个字符范围时,首尾字符必须以升序的顺序出现(A-Z 或 0-100)。例如,[A-Z] 是有效的,而 [Z-A] 则无效。
  • 字符顺序 [ ] 忽略不计,被看作零长度字符串 (“”)。
请参阅

Like 运算符 SQL 表达式s

 





总记录:2篇  页次:1/1 9 1 :