最大匹配

wu222w 2011-01-19 09:16:30

select * from a,b
where a.id like b.id+'%'

这样能进行最大匹配呢???
...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wu222w 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liupeng_mail 的回复:]
SQL code
select * from a,b
where a.id like cast(b.id as varchar(100))+'%'

需要注意下其他情况,id一般是数值型的。
如果这个应用复合你的要求,就是最大匹配了,如果在前面加上通配符%,那么匹配的更多
[/Quote]
不是的,举个例子如果a里面是22.cc.cc ,b里面是22.以及22.cc会2个都匹配的。
AcHerat 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wu222w 的回复:]
引用 1 楼 acherat 的回复:
这样肯定有语法错误吧!

是可以这么写的
[/Quote]

学习下,如果是最大匹配的话!前后应该都有%来控制。就像4#说的。
jiao3630 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 wu222w 的回复:]
SQL code

select * from a,b
where a.id like b.id+'%'


这样能进行最大匹配呢???
[/Quote]
这个语法是么什么问题 不过应该会出现很多重复结果
wu222w 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwgou 的回复:]
这样的写法相当于(除非a.id = b.id,否则是查询不出结果的):

SQL code
select * from a,b
where a.id = b.id+'%'


可尝试以下写法:

SQL code
select * from a,b
where CHARINDEX(a.id, b.id) = 1
[/Quote]
感谢回复,不是的确实是模糊查询的,CHARINDEX也是不能最大回匹配的。。。

select * from a,b
where a.id like b.id+'%'

liupeng_mail 2011-01-19
  • 打赏
  • 举报
回复
 select * from a,b
where a.id like cast(b.id as varchar(100))+'%'

需要注意下其他情况,id一般是数值型的。
如果这个应用复合你的要求,就是最大匹配了,如果在前面加上通配符%,那么匹配的更多
Shawn 2011-01-19
  • 打赏
  • 举报
回复
这样的写法相当于(除非a.id = b.id,否则是查询不出结果的):
select * from a,b
where a.id = b.id+'%'

可尝试以下写法:
select * from a,b
where CHARINDEX(a.id, b.id) = 1
wu222w 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acherat 的回复:]
这样肯定有语法错误吧!
[/Quote]
是可以这么写的
AcHerat 2011-01-19
  • 打赏
  • 举报
回复
这样肯定有语法错误吧!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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