代码之家  ›  专栏  ›  技术社区  ›  aviraldg Ortiga

SQL中的“LIKE”和“=”有什么区别?

  •  38
  • aviraldg Ortiga  · 技术社区  · 17 年前

    以下两者之间有什么区别吗

    SELECT * FROM users WHERE username="davyjones"
    

    SELECT * FROM users WHERE username LIKE "davyjones"
    
    13 回复  |  直到 5 年前
        1
  •  37
  •   Milan BabuÅ¡kov    17 年前

    create table t1 ( c10 char(10) );
    insert into t1 values ('davyjones');
    
    select * from t1 where c10 = 'davyjones';
    -- yields 1 row
    
    select * from t1 where c10 like 'davyjones';
    -- yields 0 rows
    

    当然,假设您在符合标准的DBMS上运行它。顺便说一句,这是CHARs和VARCHARs的主要区别之一。

        2
  •  44
  •   code_burgar    8 年前

    LIKE = 检查是否完全匹配。

    例如

    SELECT * FROM test WHERE field LIKE '%oom';
    

    Zoom, Boom, Loom, Groom
    
        3
  •  12
  •   Community Mohan Dere    9 年前

    在这种情况下,结果没有什么不同。然而,它使用不同的方法进行比较,“LIKE”会慢得多。

    http://www.techonthenet.com/sql/like.php

    在这种情况下,您仍然希望使用equals。

    更新 :请注意,对于结果为 将 this answer

        4
  •  4
  •   T.J. Crowder    17 年前

    LIKE 允许通配符,如 % _ (这里只有一个字符)。

    SELECT * FROM users WHERE username LIKE 'joe%'
    

    joe

        5
  •  4
  •   DarthJDG chetan borse    15 年前
    create table A (id int,name varchar(30))
    
    insert into A values(4,'subhash')
    

    使用尾随空格搜索名称字段:

    select * from A where name='Subhash '
    --Yields 1 row
    select * from A where name like 'Subhash '
    --Yields 0 row
    
        6
  •  3
  •   Larsenal    17 年前

    /* Returns all users whose username starts with "d" */
    SELECT * FROM users WHERE username LIKE 'd%'
    
    /* Returns all users whose username contains "dav" */
    SELECT * FROM users WHERE username LIKE '%dav%'
    
        7
  •  2
  •   Richard    17 年前

    SELECT * FROM users WHERE username LIKE 'davy%'
    

        8
  •  1
  •   auujay    17 年前

    LIKE 支持通配符。通常它使用%或u字符作为通配符。

    使用不带通配符的LIKE运算符与使用=运算符相同。

        9
  •  1
  •   Community Mohan Dere    6 年前

    这个 LIKE

    SELECT * FROM suppliers
    WHERE supplier_name like 'Hew%';
    

    See more examples.

    等于 = 用于相等匹配。

        10
  •  1
  •   axel22    15 年前

    = 是精确匹配运算符。i、 你的名字在哪里 W% 它意味着从 W 然后是一个或多个字符 = ='James' 这是完全匹配的

        11
  •  0
  •   Jeremy Bourque    17 年前

    等于 '=' 这只是为了平等。另一方面 LIKE 支持SQL通配符匹配。

    喜欢 name like '%jones' 让所有名字都以琼斯结尾。具有 ,百分比 '%' 字符是长度为零或更多的任意字符,下划线字符, '_'

        12
  •  0
  •   axel22    15 年前

    LIKE 连同 % ,表示“任意字符串”。我认为还有一个字符可以与 喜欢 对于“任何角色”,不通过谷歌搜索就不知道那是什么。

    喜欢 以某种方式使用regexp。

        13
  •  0
  •   Andriy M    13 年前

    Like like 'davyjon%' davyjon ,并获取您可能放置的确切位置 'davyjones' =