VB6 语法问题
Posted
技术标签:
【中文标题】VB6 语法问题【英文标题】:VB6 Syntax Question 【发布时间】:2011-04-09 10:48:43 【问题描述】:谁能告诉我这个 Asterisk(*) 是干什么用的。 ...tblpersonal where empid like '" & idNumber & "*'"
。如果换成百分号(%),结果会怎样?
【问题讨论】:
""结果会怎样?""你尝试会发生什么? 这看起来像是 SQL 而不是 VB 代码——它是什么 SQL 引擎? mysql?微软SQL?甲骨文? 对不起,这是我们的书面作业...而且我家没有软文。 你正在学习什么课程,使用 VB6?几年前,微软完全停止了对 VB6 开发环境 (Visual Studio 6) 的支持。 VB6 runtime 目前仍受支持,但写在墙上。 【参考方案1】:LIKE 条件允许您在 SQL 语句的 where 子句中使用通配符。这允许您执行模式匹配。 LIKE 条件可用于任何有效的 SQL 语句 - 选择、插入、更新或删除。
您可以选择的模式有:
% allows you to match any string of any length (including zero length)
_ allows you to match on a single character
接下来,让我们解释一下 _ 通配符的工作原理。请记住,_ 只查找一个字符。
例如,
SELECT * FROM suppliers
WHERE supplier_name like 'Sm_th';
此 SQL 语句将返回名称长度为 5 个字符的所有供应商,其中前两个字符是“Sm”,后两个字符是“th”。例如,它可以返回名称为“Smith”、“Smyth”、“Smath”、“Smeth”等的供应商。
这是另一个例子,
SELECT * FROM suppliers
WHERE account_number like '12317_';
同样你可以使用星号 (*) 代替 (%)
希望对你有帮助
【讨论】:
【参考方案2】:SQL 中的百分号 (%) 表示“在此处匹配任意数量的字符”。例如。 LIKE '%test'
将匹配 abctest,LIKE 'test%'
将匹配 testabc
星号字符看起来会匹配文字 *,例如匹配所有以星号结尾的 empids(取决于 SQL 的版本 - 见下文)
编辑:请参阅 Microsoft Jet wildcards: asterisk or percentage sign? 以获得有关 * 与 % 的更深入的答案
【讨论】:
我根据提供给另一个线程的链接对此投了赞成票。如果它实际上声明 LIKE 通配符在 Jet SQL 中会根据是否使用 Jet OLEDB 提供程序与 DAO(或带有 Access ODBC 驱动程序的 ADO)而有所不同,那就更好了。 现实情况甚至更进一步。使用 Jet 4.0 Access ODBC 驱动程序时,您可以选择使用新的 SQL-92 语法:msdn.microsoft.com/en-us/library/ms712547(VS.85).aspx @Bob Riemersma:谢谢,我相应地编辑了链接的答案。【参考方案3】:这更像是一个 SQL 语法问题,而不是 VB6 问题。 :-)
您还没有提到它正在与哪个数据库通信(我假设它正在与数据库通信)。星号在 SQL(或 VB6 字符串)中通常不是特殊的,因此查询将查找 empid
是 like
idNumber
中的任何内容,后跟一个星号。可能不是本意。如果您将其替换为%
,您将在idNumber
变量中查找以开头的任何empid
。如果该列是数字,则在比较之前将其转换为文本。
例如,如果idNumber
包含100
,例如,并且数据库中有empid
值具有10
、100
、1000
和10000
,则查询将匹配除第一个之外的所有内容,因为“100”、“1000”和“10000”都是like
“100%”。
【讨论】:
以上是关于VB6 语法问题的主要内容,如果未能解决你的问题,请参考以下文章