请问一SQL,关于 like

Tomato77 2005-05-13 04:51:16
t1表有 aa, bb, cc 三个字段,

当出现空的时候

现在我想用
select * from t1 where aa like 'xxx' and bb like 'zzz' and cclike 'yyy'
的形式搜索记录,但当遇到有字段出现空值的情况,就无法正确搜索.请问应该怎样改这条SQL ? 谢谢
...全文
233 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lajiaolong 2005-05-16
  • 打赏
  • 举报
回复
我用VB的,不知道呀,你试试好了……
Tomato77 2005-05-16
  • 打赏
  • 举报
回复
to lajiaolong(辣椒龙) 用你的方法,刚才的问题已经解决.
谢谢大家.

请问 如果delphi中的 DBmemo 控件 内容是不是不能用 like 操作实现查询? 如果可以,应该怎样写?
lajiaolong 2005-05-16
  • 打赏
  • 举报
回复
注意Null和空串是不Like的,如果想数据库中的空串也满足 Like "",可以用 (aa & "" like '%xxx%'),把Null加上一个""就可以满足了,如果记录中是非空串,也不会受到影响
cb0912cn 2005-05-16
  • 打赏
  • 举报
回复
某条记录 aa 字段为空 , 那么当我在应用程序中对应aa字段的搜索栏不输入任何参数的话,该记录是应该符合条件被搜索出来的.但现在却未能搜索出该记录.

没看懂

估计是还没有满足完条件,不过你可以在后面加上条件
nz起的作用:
使用 Nz 函数可以返回 0,或一个空字符串(" ") ,或者当一个 Variant 为 Null 时,该函数返回其他的指定值。例如,您可以使用该函数将 Null 值转换为其他值并防止它通过表达式扩散。


这个函数是在vba情况下可以
如果delphi下没有该函数,就不能运行
你可以尝试在delphi下找有没有类似nz的函数
Tomato77 2005-05-16
  • 打赏
  • 举报
回复
为什么我在 delphi 里用Nz函数时会返回一个错误:Nz不是一个有效的函数名? 但我把该SQL 用ADOQMain.SQL.SaveToFile('d:\ADOQMain.txt'); 直接在access中却可以正常查询。
Tomato77 2005-05-16
  • 打赏
  • 举报
回复
我开始也是用 select * from t1 where (aa like '%xxx%')or (bb like '%zzz%') or (cc like '%yyy%')
但查询返回的记录是不完全的,原因在: 有空值的记录没有被正确筛选出来


Tomato77 2005-05-16
  • 打赏
  • 举报
回复
to cb0912cn(cb) 用这样的方法在查询时返回

关键问题是,如果进行比较的字段为空,那么在进行 like %xx% 操作时就不起作用。
例如:
某条记录 aa 字段为空 , 那么当我在应用程序中对应aa字段的搜索栏不输入任何参数的话,该记录是应该符合条件被搜索出来的.但现在却未能搜索出该记录.

sirious 2005-05-16
  • 打赏
  • 举报
回复
where isnull(aa)=false and bb.....
chichunhua 2005-05-14
  • 打赏
  • 举报
回复
select * from t1 where (aa like '%xxx%')or (bb like '%zzz%') or (cc like '%yyy%')
試試
cb0912cn 2005-05-14
  • 打赏
  • 举报
回复
"nz([aa])" replace "aa"
cxj1976 2005-05-13
  • 打赏
  • 举报
回复
会出现什么问题?应该没有问题吧,但最好把语句改成
select * from t1 where (aa like '%xxx%') and (bb like '%zzz%') and (cc like '%yyy%')
要不然就和 = 一样了

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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