这种查询能够实现吗?(翻遍论坛不见答案)(50)

  • 主题发起人 主题发起人 batconv
  • 开始时间 开始时间
B

batconv

Unregistered / Unconfirmed
GUEST, unregistred user!
假设Table表中有个字段“姓名”,同时有个函数PY能够生成拼音首字母,如PY('张三'):='ZS',PY('5W张三'):='5WZS'。 我的设想是在一个编辑框中输入一个姓名首字母就可以查询出Table表中姓名字段首字母与输入内容相似的记录,如输入ZL可查询出张立、章力等。这样怎么实现呢?我知道在“姓名”字段外再设一个“拼音码”字段并预先存好生成的拼音码可以实现模糊查询,但是不借助拼音码字段用查询语句怎么实现呢?SQL:='select * from Table where PY('姓名') like '+Edit1.text'ADOQuery2.Close;ADOQuery2.SQL.Clear;ADOQuery2.SQL.Add(sSQL);ADOQuery2.Prepared;ADOQuery2.Open;上述不能执行。也就是说怎么在查询中对字段进行预处理呢?大家有没有遇到过这种问题?
 
还是预设字段好解决,否则麻烦。
 
用自定义函数
 
关键是自定义函数如何用在SQL语句中,愿闻其详!
 
如果是任意匹配的话:SQL:='select * from Table where PY(''姓名'') like %'+Edit1.text+'%';如果是开头匹配的话:SQL:='select * from Table where PY(''姓名'') like '+Edit1.text+'%';还有要保证那个PY函数是数据库函数才行。另外,我想说的是你这个查询效率并不高,如果没有对这个字段建立函数索引的话,那将是全表搜索,最好还是建个拼音字段
 
我这个就是用在临时表中,在主表中已经建立拼音字段了,是为补充。关键就是这个PY函数是自定义的,不是数据库函数啊!!
 
以前遇到同样的问题,最后将姓名段生成临时list,由筛选后的list再生成Sql进行查询的,不知有没有好的解决办法。
 
数据库自定义函数在使用时与数据库自带的函数是没有什么区别的,问题不在这儿
 
那问题在哪里?自定义函数是delphi的不是SQL的
 
py一定要在SQL中自定义函数
 
初学者!用的是access数据库,不知道怎么在SQL中自定义函数,请高手指点一二。
 
加字段快一点.
 
虽然没有找到更好的解决办法但还是谢谢大家
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部