如何让数据库中的字符串部分匹配查询字符串?

icansaymyabc 2015-10-27 06:04:30
如果是查询字符串短于或等于数据库中的字符串那很好办:

首端匹配
select * from tab where filed like 'string%'
尾端匹配
select * from tab where filed like '%string'
包含
select * from tab where filed like '%string%'

可是查询的字符串长于数据库中的字符串时该咋办?

比如用 stringbb 这个字符串进行首端匹配查询时,要把数据库中的这些字符记录都提出来:

string
stringb
stringbb
stringbbccdd
stringbbccddeeff

比如用 bbstring这个字符串进行尾端匹配查询时,要把数据库中的这些字符记录都提出来:
aaabbbstring
bbstring
bstring
string

比如用 aastringbb这个字符串进行包含匹配查询时,要把数据库中的这些字符记录都提出来:
string
astringb
astring
stringb
cccdddaastringbb
cccddeaastringbbeeffff
...全文
1202 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南雪_158 2015-10-30
  • 打赏
  • 举报
回复
qq_17482963 2015-10-28
  • 打赏
  • 举报
回复

with tm (code) as
(
select 'string' union all
select 'astringb' union all
select 'astring' union all
select 'stringb' union all
select 'cccdddaastringbb' union all
select 'cccddeaastringbbeeffff'
)
select * from tm where code like '%aastringbb%' or 'aastringbb' like '%'+code+'%'
试试这样符不符合你的要求
icansaymyabc 2015-10-28
  • 打赏
  • 举报
回复
还是CSDN上高手多,问题就这么简简单单解决了
shoppo0505 2015-10-27
  • 打赏
  • 举报
回复
你举的例子中,先要找出词根的所有数据行,在此词根为string, 然后再删除string+一个字符不匹配的,string+两个个字符不匹配的…….数据行。 一步得出结果的选取应该不行。 上面是一个思路,应该还有其它做法。
icansaymyabc 2015-10-27
  • 打赏
  • 举报
回复
本人信誉好,分数多,若能解决,加分加到可以加的最高分结贴

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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