sql两字符串比较

wohenishizhu 2010-04-21 10:55:05
字符串 a='0100|0200|0311|0315|0318|0420|'
字符串 b='0111|0112|0316|0304|0522|0503|'

where b like a print '888'

a中的0100代表所有的,即01[0-9][0-9]

我的本方法是用替换“|”来实现拼sql语句,但是效率很低,请各位高手给个高效的方法!
FUNCTION [dbo].[String_Rather2] --判断类
(
@PanString varchar(2000),--要判断的列
@YuanString varchar(2000) --要对比的列
)
RETURNS varchar(max)
AS
BEGIN
declare @sql varchar(max)
set @sql =char(32)+@YuanString+char(32)+'like'+char(32)+char(39)+char(37)+replace(@PanString,'|',char(37)+char(39)+char(32)+'or'+char(32)+@YuanString+char(32)+'like'+char(32)+char(39)+char(37))+'m><n'+char(37)+char(39)
RETURN @sql
END
@a=a,@b=b --调用上面的方法函数

set @a = replace(@a ,'000','0[0-9][0-9]')
set @a = replace(@a ,'00','[0-9][0-9]')
set @where = @where + ' and ('+dbo.String_Rather2(@a, @b)+')'

再次请大家赐教!!在线等……
...全文
557 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-04-26
  • 打赏
  • 举报
回复
建议用外部程序,诸如SPLIT之数的函数实现,如果楼主硬要这样搞的话,那也是霸王硬上弓,赶鸭上架,跟猪似地……
htl258_Tony 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wohenishizhu 的回复:]
数据库city字段:0111|0112|0316|0304|0522|0503|
我要查询复选框:n个,选择5个,value用“|”隔开,即'0100|0200|0311|0315|0318|0420|(其中0100|0200是大类,类似的有好多,0100包括0101-0199)
表中city字段符合条件的行列出来!
[/Quote]规则是尾巴两个0为大类,其余为小类,可以这样理解吗
wohenishizhu 2010-04-26
  • 打赏
  • 举报
回复
数据库city字段:0111|0112|0316|0304|0522|0503|
我要查询复选框:n个,选择5个,value用“|”隔开,即'0100|0200|0311|0315|0318|0420|(其中0100|0200是大类,类似的有好多,0100包括0101-0199)
表中city字段符合条件的行列出来!
dichun 2010-04-22
  • 打赏
  • 举报
回复
没看明白,你需要啥结果,
htl258_Tony 2010-04-22
  • 打赏
  • 举报
回复
字符串 a='0100|0200|0311|0315|0318|0420|'
字符串 b='0111|0112|0316|0304|0522|0503|'

就这两字符串,出来的结果是什么,如果不能一眼看懂的,请补充说明规则。
wohenishizhu 2010-04-21
  • 打赏
  • 举报
回复
ddddddddddddddddddddd
wohenishizhu 2010-04-21
  • 打赏
  • 举报
回复
主要实现目的,数据库表中有一字段是喜欢的地方,即a存放5个地方的id,0100代表市,0111代表01市的地方,现在要选择5个地方或市,从表中查出喜欢这些地方的人(如果选0100,就要查出所有喜欢01市的所有地方的人),不知大家有没有好的思路……
wohenishizhu 2010-04-21
  • 打赏
  • 举报
回复
按“|”分割所有的那些四位数
比如a='0100|0200|...' b='0111|6000|...'
b中的 0111 属于a中的 0100 就打印 8888

狂哭,表达能力太差,对不起大家了……
东那个升 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wohenishizhu 的回复:]
我就要一个如果b字符串属于a字符串,打印8888
0100包括0111-0199
不知几位能明白否
[/Quote]

没懂,只比前4位码
wohenishizhu 2010-04-21
  • 打赏
  • 举报
回复
我就要一个如果b字符串属于a字符串,打印8888
0100包括0111-0199
不知几位能明白否
dawugui 2010-04-21
  • 打赏
  • 举报
回复
没看懂,要什么结果?
东那个升 2010-04-21
  • 打赏
  • 举报
回复
你要的是什么样的结果。。。

22,209

社区成员

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

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