我正在寻找一种方法来搜索包含*
的字符串数据类型的列 - 问题是星号或星号是保留符号。以下查询无法正常工作:MS Access:在列中搜索星号/星号
select * from users where instr(pattern,"*")
如何编写Access查询以搜索列以查找星号?
我正在寻找一种方法来搜索包含*
的字符串数据类型的列 - 问题是星号或星号是保留符号。以下查询无法正常工作:MS Access:在列中搜索星号/星号
select * from users where instr(pattern,"*")
如何编写Access查询以搜索列以查找星号?
耶,发现了这件事由我自己:
select * from users where instr(pattern,chr(42))
只需使用
select * from users where instr(pattern,"*") > 0
在Access中,InStr函数返回 第一次出现的位置另一个字符串中的一个字符串的 。
您可以通过使用方括号在访问搜索reseverd charaters:
select * from users where pattern like "*[*]*"
使用ALIKE
功能,因为它的通配符不包括*如
SELECT * FROM Users WHERE pattern ALIKE '%*%';
(由DWF编辑:见@ onedayone的useful explanation of ALIKE)
小心绘制LIKE和ALIKE运算符之间的区别?我无法快速搜索在Access中有助于找到区别。就我所知,从实验中可以看出,ALIKE允许使用SQL Server兼容的通配符,而无需将数据库设置为使用SQL 92模式。 – 2009-12-14 22:35:26
我通常会这样做,但这里的差异并不相关:您只需要知道ALIKE将*字符视为文字。有关更多详情,请参阅我的其他答案http://stackoverflow.com/questions/719115/microsoft-jet-wildcards-asterisk-or-percentage-sign/720896#720896 – onedaywhen 2009-12-15 09:36:26
我编辑到你的答案引用你的其他答案(我已经见过) 。当我认为合适时,请参阅我*将*编辑。 – 2009-12-15 23:52:23
在哪个版本的AF访问你测试呢? 2007年不起作用 – 2009-12-13 07:01:15
它应该有一个布尔条件 - 就像'where instr(pattern,chr(42))> 0'? – 2009-12-13 07:03:38
是的,它应该。 – 2009-12-13 07:06:00