2009-12-13 76 views
0

我正在寻找一种方法来搜索包含*的字符串数据类型的列 - 问题是星号或星号是保留符号。以下查询无法正常工作:MS Access:在列中搜索星号/星号

select * from users where instr(pattern,"*") 

如何编写Access查询以搜索列以查找星号?

回答

2

耶,发现了这件事由我自己:

select * from users where instr(pattern,chr(42)) 
+0

在哪个版本的AF访问你测试呢? 2007年不起作用 – 2009-12-13 07:01:15

+0

它应该有一个布尔条件 - 就像'where instr(pattern,chr(42))> 0'? – 2009-12-13 07:03:38

+0

是的,它应该。 – 2009-12-13 07:06:00

2

只需使用

select * from users where instr(pattern,"*") > 0 

Access: Instr Function

在Access中,InStr函数返回 第一次出现的位置另一个字符串中的一个字符串的 。

4

您可以通过使用方括号在访问搜索reseverd charaters:

select * from users where pattern like "*[*]*" 
1

使用ALIKE功能,因为它的通配符不包括*如

SELECT * FROM Users WHERE pattern ALIKE '%*%'; 

(由DWF编辑:见@ onedayone的useful explanation of ALIKE

+0

小心绘制LIKE和ALIKE运算符之间的区别?我无法快速搜索在Access中有助于找到区别。就我所知,从实验中可以看出,ALIKE允许使用SQL Server兼容的通配符,而无需将数据库设置为使用SQL 92模式。 – 2009-12-14 22:35:26

+0

我通常会这样做,但这里的差异并不相关:您只需要知道ALIKE将*字符视为文字。有关更多详情,请参阅我的其他答案http://stackoverflow.com/questions/719115/microsoft-jet-wildcards-asterisk-or-percentage-sign/720896#720896 – onedaywhen 2009-12-15 09:36:26

+0

我编辑到你的答案引用你的其他答案(我已经见过) 。当我认为合适时,请参阅我*将*编辑。 – 2009-12-15 23:52:23