微软bug?!.(:-(

wx263 2000-06-24 09:50:00
这是微软的bug还是使用错误?

本人在使用dao 3.51查询数据库时,发现用Like查询统配字符时,出来的结果
错的多对的少,请教各位大虾可有方法解决。
select * from HotelTab where hotelname like '*山东*'
使用Instr改造为
select * from HotelTab where instr(1,hotelname,"山东")>0
其中Hoteltab为数据库表名,hotelname为字段名
本意是找出所有包含“山东”省的酒店名称,却返回一堆不包括山东字样的记录
如果用select * from HotelTab where hotelname like '*东*',甚至会将
全英文的hotelname传过来,实在恐怖
用Option compare text and binary,无效
查看帮助说option compare database有可能可以解决,但此语句似乎在vb6中要加
引用,不知是哪一个引用?请知情者告知,在此多多感谢
...全文
186 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-06-26
  • 打赏
  • 举报
回复
试试:
select * from HotelTab where instrb(hotelname,"山东")
wx263 2000-06-26
  • 打赏
  • 举报
回复
感谢tophead和zyc的多多支持
由于使用的是通用查询,所以用tophead的方法似乎不灵
另如只查询“东”,则错的一塌糊涂
由于用的是dao作为数据库引擎,所以只能用*作为通配
zyc 2000-06-25
  • 打赏
  • 举报
回复
用法错误,SQL语言的通配字符为 "%"和"_",你的语句改为这样就没问题了:
select * from HotelTab where hotelname like '%山东%'
我没用过"*"作通配符, 只知在MS_SQL7.0中不能用作通配符。
TopHead 2000-06-25
  • 打赏
  • 举报
回复

select * from HotelTab where instr(1,hotelname,"山东")>0
改为试试:
select * from HotelTab where (instr(1,hotelname,"山东")-1) mod 2=0

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧