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 字符串)中通常不是特殊的,因此查询将查找 empidlike idNumber 中的任何内容,后跟一个星号。可能不是本意。如果您将其替换为%,您将在idNumber 变量中查找开头的任何empid。如果该列是数字,则在比较之前将其转换为文本。

例如,如果idNumber 包含100,例如,并且数据库中有empid 值具有10100100010000,则查询将匹配除第一个之外的所有内容,因为“100”、“1000”和“10000”都是like“100%”。

【讨论】:

以上是关于VB6 语法问题的主要内容,如果未能解决你的问题,请参考以下文章

VB6 中的 C++ 代码翻译

返回数据计算结果的 SQL 语法

VB 6 如何使自定义集合类支持 For Each

求vb6.0函数和语句大全~!

VB中strconv 的作用

VB6.0中如何实现逐行读入文本文件?