patindex如果想判断和多个不同长短的词组匹配怎么办?
比如想匹配col中包含'你好'或'我'或'你妹'或'我勒个去'的用patindex怎么办?

解决方案 »

  1.   

    declare @str varchar(20)
    set @str = '你真的我嘞个去别啥着纠结完了吧孩子缴枪哎呀泥巴是李刚额我信了'select (case when patindex('%[我嘞个去,纠结]%',@str)>0 then 1 else 0 end)
      

  2.   


    declare @t table (col varchar(10))
    insert into @t
    select '你好吗' union all
    select '我不好' union all
    select '你妹好吗' union all
    select '我勒个去' union all
    select '内容不文明' union all
    select '有点' union all
    select '我走了'select * from @t
    where patindex('%你好%', col) <> 0
    or patindex('%我%', col) <> 0
    or patindex('%你妹%', col) <> 0
    or patindex('%我勒个去%', col) <> 0
    /*
    col
    ----------
    你好吗
    我不好
    你妹好吗
    我勒个去
    我走了
    */
      

  3.   

    额,用or效率就下来了吧,几个or就查几次额
      

  4.   

    java中好像用|表示或
    sql木有么?
      

  5.   


    --查询
    select * 
    from S
    where patindex('%[高波飞]%',SNAME)>0
    /*结果
    S#              SNAME      AGE         SEX
    --------------- ---------- ----------- ----
    040405028       张波         20          F 
    200510405104    高博         22          男
    200510405105    筵永飞        23          男
    200510405106    董广飞        21          男
    200510405108    赵虎波        22          男(5 行受影响)
    */
    -----好像有点问题是全分解了..不知道怎么一个词一个词匹配
    CREATE TABLE TEST(MSG VARCHAR(40))
    INSERT INTO TEST(MSG)
    SELECT '你好吗?'
    UNION 
    SELECT '我大概不是很好,你妹'
    UNION
    SELECT '浮游,不知所求;猖狂,不知所往.'
    UNION 
    SELECT '我勒个去啊'
    UNION 
    SELECT '莫愁,你还小,尚不知人心难测啊...'
    -----
    SELECT * FROM TEST
    /*MSG
    ----------------------------------------
    浮游,不知所求;猖狂,不知所往.
    莫愁,你还小,尚不知人心难测啊...
    你好吗?
    我大概不是很好,你妹
    我勒个去啊(5 行受影响)*/
    --
    select * 
    from TEST
    where patindex('%[我你妹我勒个去]%',MSG)>0
    /*
    MSG
    ----------------------------------------
    莫愁,你还小,尚不知人心难测啊...
    你好吗?
    我大概不是很好,你妹
    我勒个去啊(4 行受影响)
      

  6.   


    select * 
    from TEST
    where patindex('%[你好我你妹我勒个去]%',MSG)>0
    /*全分解了..任意匹配
    莫愁,你还小,尚不知人心难测啊...
    你好吗?
    我大概不是很好,你妹
    我勒个去啊(4 行受影响)
      

  7.   

    patindex('%[你好我你妹我勒个去]%',MSG)>0
    直接这样是匹配每个字的,不是组合...