首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • SQL查询中怎样判断一个长字符串 [包含] 另一个字段的值? [已结贴,结贴人:crmserver]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:15:09 楼主
    比如:name字段中有个abcd的值
    select * from tblTest where name 包含于 'abcdefgh'

    不能用charIndex或者patIndex实现

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:15:581楼 得分:5
    select * from tblTest where charindex(name ,'abcdefgh' )>0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:17:382楼 得分:5
    SQL code
    select * from tb where charindex('abcdefgh',name)>0 select * from tb where patindex('%abcdefgh%',name)>0 select * from tb where name like '%abcdefgh%'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangCK
    • 等级:
    发表于:2008-05-17 20:17:453楼 得分:2
    狙击啊..
    人家说不能用charindex啊.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:25:234楼 得分:0
    引用 3 楼 liangCK 的回复:
    狙击啊..
    人家说不能用charindex啊.


    那就like吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:27:155楼 得分:0
    引用 4 楼 happyflystone 的回复:
    引用 3 楼 liangCK 的回复:
    狙击啊.. 
    人家说不能用charindex啊.


    那就like吧


    like 也不能用吗?





    select * from tb
    where replace('abcdefgh',name,'') < 8
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangCK
    • 等级:
    发表于:2008-05-17 20:29:526楼 得分:0
    引用 5 楼 happyflystone 的回复:
    引用 4 楼 happyflystone 的回复:
    引用 3 楼 liangCK 的回复:
    狙击啊.. 
    人家说不能用charindex啊. 
     

    那就like吧


    like 也不能用吗?





    select * from tb 
    where replace('abcdefgh',name,'') < 8


    replace也不能用呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:35:407楼 得分:0
    引用 5 楼 happyflystone 的回复:
    引用 4 楼 happyflystone 的回复:
    引用 3 楼 liangCK 的回复:
    狙击啊..
    人家说不能用charindex啊.


    那就like吧


    like 也不能用吗?





    select * from tb
    where replace('abcdefgh',name,'') < 8



    高,这句没看懂
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:36:088楼 得分:0
    引用 6 楼 liangCK 的回复:
    引用 5 楼 happyflystone 的回复:
    引用 4 楼 happyflystone 的回复:
    引用 3 楼 liangCK 的回复: 
    狙击啊..   
    人家说不能用charindex啊. 
     

    那就like吧 
     

    like 也不能用吗? 


    那 


    select * from tb 
    where replace('abcdefgh',name,'')  < 8 


    replace也不能用呢?


    容再下想想
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-17 20:42:369楼 得分:0
    暂时想不到了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 10:39:2010楼 得分:0
    各位帮忙啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 10:42:3311楼 得分:0

    楼上说过用
    select * from tb   
    where replace('abcdefgh',name,'')  < 8 

    但是'abcdefgh'其实是个变量,不一定是8位,可能很多,请帮忙继续想想
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 10:56:5212楼 得分:5
    SQL code
    --这样? --> 测试数据: @os declare @os table (id int,name varchar(5)) insert into @os select 1,'abcde' union all select 2,'de' union all select 3,'cde' union all select 4,'abd' union all select 5,'bcde' union all select 6,'abe' union all select 6,'xyz' declare @name varchar(50) set @name='abcdefghij' select * from @os where len(replace(@name,name,''))<len(@name)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 11:00:1213楼 得分:0
    引用楼主 crmserver 的帖子:
    比如:name字段中有个abcd的值
    select * from tblTest where name包含于'abcdefgh'

    不能用charIndex或者patIndex实现




    SQL code
    declare @str varchar(100) set @str='abcdefgh' select * from tblTest where @str like '%'+name+'%' --> or select * from tblTest where @str replace(@str,name,'')<>@str

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 11:01:1914楼 得分:0
    SQL code
    declare @str varchar(100) set @str='abcdefgh' select * from tblTest where @str like '%'+name+'%' --> 笔误: select * from tblTest where replace(@str,name,'')<>@str
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 11:20:5015楼 得分:0
    14楼的方法在SQL Server可以运行,但是在Access数据库中不能用declare声明变量怎么办?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 15:43:4316楼 得分:0
    个人感觉like是最好用的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 09:41:2017楼 得分:0
    16楼的,你说用like好用,如何实现啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 10:14:3318楼 得分:0
    select * from tblTest where name like '%abcdefgh%'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 10:38:4619楼 得分:0
    不是这样的,我要用实现这样的查询:

    select * from tblTest where name 包含于 'abcdefgh' 

    解释一下,name中的值只是'abcdefgh' 中的一部分,也就是查询少的字符串是否包含在多的字符串中,这种查询,跟我们平常的查询相反.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 12:21:5420楼 得分:0
    引用 19 楼 crmserver 的回复:
    不是这样的,我要用实现这样的查询:

    select * from tblTest where name 包含于 'abcdefgh' 

    解释一下,name中的值只是'abcdefgh' 中的一部分,也就是查询少的字符串是否包含在多的字符串中,这种查询,跟我们平常的查询相反.

    12楼的不就是这意思么?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 12:26:3121楼 得分:1
    撒点水水...别介意...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 12:37:5122楼 得分:1
    学习了



    replace(@str,name,'') <>@str

    len(replace(@name,name,'')) <len(@name)


    好想法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 12:48:4923楼 得分:0
    这样:
    SQL code
    select * from tblTest where 'abcdefgh' like '%'+name+'%'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 20:50:4524楼 得分:0
    select * from tblTest where name like '*abcd*' 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-20 01:44:0225楼 得分:1

    应该是select * from tblTest where name like '%abcd%'吧 
    新手,不知道这是不是一样的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-20 08:59:3526楼 得分:0
    引用 22 楼 GDC_ZhaoYZ0304360 的回复:
    学习了



    replace(@str,name,'') <>@str

    len(replace(@name,name,'')) <len(@name)


    好想法


    很强大,学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-20 14:46:3127楼 得分:0
    select name from tab where replace(name,'abcd','') <>name 通杀...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-20 17:23:0628楼 得分:0
    楼主应该用的不是MS SQL,MS SQL 的这些函数都用不上,只能用like
    只有23楼的可以了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-20 23:28:2029楼 得分:0
    同意7楼的观点
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wdbjsh
    • 等级:
    发表于:2008-05-21 11:19:1530楼 得分:0
    顶一下23楼的 oracle下 测试通过
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 14:01:2831楼 得分:0
    SQL code
    select * from tblTest where 'abcdefgh' like '%'+name+'%'

    不错,顶!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 14:39:3132楼 得分:0
    SQL code