2011-04-09 104 views
1

任何人都可以告诉我这个星号(*)是什么。 ...tblpersonal where empid like '" & idNumber & "*'"。如果用百分号(%)替换它,结果如何呢?VB6语法问题

+0

“”结果会是什么?“”当你尝试时会发生什么? – Mat 2011-04-09 10:51:37

+0

注意到这个查询的结果 – 2011-04-09 10:53:11

+0

这看起来像SQL而不是VB代码 - 它是什么SQL引擎? MySQL的? MSSQL?甲骨文? – Rich 2011-04-09 10:54:41

回答

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个字符,其中前两个字符是“钐”,最后两个字符是“日”的所有供应商。例如,它可以返回供应商的名称为“史密斯”,“史密斯”,“Smath”,“Smeth”等

下面是另一个例子,

SELECT * FROM suppliers 
WHERE account_number like '12317_'; 

用同样的方法ü可以使用星号(*)代替(%)

我希望对你有所帮助

1

SQL中的百分比(%)符号表示“在此匹配任意数量的字符”。例如。 LIKE '%test'将匹配abctest,LIKE 'test%'将匹配testabc

Asterisk字符看起来像匹配文字*,例如,匹配带星号结尾的所有empids(取决于SQL版本 - 见下文)

编辑:深入答案更见Microsoft Jet wildcards: asterisk or percentage sign?上* VS%

+0

我基于提供给另一个线程的链接对此投了票。如果实际上声明LIKE通配符在Jet SQL中有所不同,取决于Jet OLEDB提供程序与DAO(或带有Access ODBC驱动程序的ADO)是否正在使用,它会好得多。 – Bob77 2011-04-10 05:58:54

+1

现实情况甚至有所不同。当使用Jet 4.0 Access ODBC驱动程序时,您可以选择使用新的SQL-92语法:http://msdn.microsoft.com/en-us/library/ms712547(VS.85).aspx – Bob77 2011-04-10 06:03:47

+0

@Bob Riemersma:谢谢,我相应地编辑了链接的答案。 – onedaywhen 2011-04-11 11:22:42

0

这是更比一个SQL语法问题VB6一个。 :-)

你还没有提及这个数据库正在与谁交谈(我假设它正在与数据库交谈)。星号在SQL(或VB6字符串)中通常不是特殊的,因此查询会查找empid,即like,无论您在idNumber后面是星号。可能不是什么意图。如果你用%代替它,你会寻找任何empid开始无论你在idNumber变量。如果该列是数字,则在比较之前它将被转换为文本。

因此,举例来说,如果idNumber包含100,再说了,有empid值与值101001000数据库,10000,查询会匹配所有,但第一的,因为“100” ,“1000”和“10000”均为like“100%”。