table表有2行记录  
id       str
1        0_1_23
2        0_10_12sql  select * from table where str like '%0_1%' 
结果2个记录  正确
sql  select * from table where str like '%0_1_%'
还这2个记录 为什么啊
应该只有 1        0_1_23这个记录吧

解决方案 »

  1.   

    select * from table where str like '%0_1_%' ESCAPE('_')??
      

  2.   

    在SQL中,_这个代表匹配一个字符的
      

  3.   

    select * from table where str like '%0_1_%' 你这样当然是两个吧后面通配符,
      

  4.   

    select * from [table] where str like '%0[_]1[_]%' 
    _需要进行转义。
      

  5.   

    select * from table where str like '%0_1%' 
    select * from table where str like '%0_1_%' 
    在1如果后面还有元素的情况下是等价的
      

  6.   

    比如
    id      str 
    1        0_1_23 
    2        0_10_12 
    3        0_1
    我现在想查询 1 和 3记录   sql  要怎么写啊
      

  7.   

    SELECT * FROM TB WHERE [STR] LIKE '%0[_]1[_]%' OR [STR] LIKE '0[_]1'
      

  8.   

    _需要转义明白了  比如  我主要的目的是
    id      str 
    1        0_1_23 
    2        0_10_12 
    3        0_1 
    我现在想查询 1 和 3记录  sql  要怎么写啊
      

  9.   

    -- =========================================
    -- -----------t_mac 小编-------------------
       --------------------希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb') IS NOT NULL
    DROP TABLE tb
    GO
    CREATE TABLE tb( i int,  a varchar(20))
    go
    insert tb SELECT 
    1    ,    '0_1_23' UNION ALL SELECT 
    2    ,    '0_10_12' UNION ALL SELECT 
    3    ,    '0_1' 
    go
    select * 
    from tb 
    where a  not  like  '%0_1[0-9]%' and  a   like  '%0_1%'
    i           a
    ----------- --------------------
    1           0_1_23
    3           0_1
    go
      

  10.   

    CREATE TABLE TBTEST(id   INT,  STRING VARCHAR(50))
    INSERT TBTEST 
    SELECT 1    ,    '0_1_23' UNION
    SELECT 2    ,    '0_10_12' UNION
    SELECT 3    ,    '0_1' SELECT * FROM TBTEST WHERE [STRING] LIKE '%0[_]1[_]%' OR [STRING] LIKE '0[_]1'
    id          STRING                                             
    ----------- -------------------------------------------------- 
    1           0_1_23
    3           0_1(所影响的行数为 2 行)
      

  11.   

    还是3个记录但是我受到启示了  select * from table where str like '%0\_1\_%' or str='0_1' 
      

  12.   

    _    与任意单字符匹配
     
    %    与包含一个或多个字符的字符串匹配
     
    [ ]  与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。
     
    [^]  与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
     例子:• WHERE FirstName LIKE '_im' 可以找到所有三个字母的、以 im 结尾的名字(例如,Jim、Tim)。
     
    • WHERE LastName LIKE '%stein' 可以找到姓以 stein 结尾的所有员工。
     
    • WHERE LastName LIKE '%stein%' 可以找到姓中任意位置包括 stein 的所有员工。
     
    • WHERE FirstName LIKE '[JT]im' 可以找到三个字母的、以 im 结尾并以 J 或 T 开始的名字(即仅有 Jim 和 Tim)
     
    • WHERE LastName LIKE 'm[^c]%' 可以找到以 m 开始的、后面的(第二个)字母不为 c 的所有姓。
      

  13.   

    建议根据位数取 
    例如前3位为'0_1'的
    用charIndex函数
      

  14.   


    SELECT* FROM TBTEST 
    WHERE '0_1_' = substring([STRING],1,4) 
    or '0_1' = substring([STRING],1,4)