복붙노트

[SQL] 어디에서 검색 조건을 '%'를 사용하여 SQL 'LIKE'쿼리 '%'포함

SQL

어디에서 검색 조건을 '%'를 사용하여 SQL 'LIKE'쿼리 '%'포함

나는 다음과 같은 SQL 쿼리가 있습니다.

Select * from table 
where name like '%' + search_criteria + '%' 

search_criteria는 'ABC'= 있으면 괜찮지 xxxabcxxxx를 포함하는 데이터를 리턴한다.

내 search_criteria는 =하지만 'ABC %', 그것은 여전히 ​​사건해서는 안되는 xxxabcxxx을 포함하는 데이터를 반환합니다.

어떻게이 상황을 어떻게 처리하나요?

해결법

  1. ==============================

    1.당신이 search_criteria에 % 기호가 리터럴 문자로보다는 와일드 카드로 취급하려면, [%]로 탈출

    당신이 search_criteria에 % 기호가 리터럴 문자로보다는 와일드 카드로 취급하려면, [%]로 탈출

    ... where name like '%' + replace(search_criteria, '%', '[%]') + '%'
    
  2. ==============================

    2.이스케이프 절을 사용 :

    이스케이프 절을 사용 :

    select *
      from (select '123abc456' AS result from dual
            union all
            select '123abc%456' AS result from dual
           )
      WHERE result LIKE '%abc\%%' escape '\'
    

    결과

    123abc%456
    

    당신은 당신이 원하는대로 당신의 이스케이프 문자를 설정할 수 있습니다. 이 경우, 기본 '\'. 는 '\ %'를 탈출 그래서 다시, 두 번째 '%가'이스케이프되지 않은 문자 와일드 카드가된다.

    SQL LIKE 절의 특수 문자의 목록을 참조하십시오

  3. ==============================

    3.가장 쉬운 해결책은 모두 "와 같은"로 분배하는 것입니다 :

    가장 쉬운 해결책은 모두 "와 같은"로 분배하는 것입니다 :

    Select * 
    from table
    where charindex(search_criteria, name) > 0
    

    내가 좋아하는 이상 charIndex의 선호합니다. 역사적으로, 더 나은 성능을했다,하지만 지금은 많은 차이를 만드는 있는지 확실하지 않습니다.

  4. ==============================

    4.당신이 사용할 수있는 SQL에서 문자를 탈출하세요! :

    당신이 사용할 수있는 SQL에서 문자를 탈출하세요! :

    예 - ESCAPE 문자를 사용하여

    이 패턴 매칭 "이스케이프 문자"하는 방법을 이해하는 것이 중요합니다. 이 예제는 오라클의 문자를 탈출 구체적으로 다루고있다.

    하자 당신은 % 또는 SQL LIKE 조건에서 _ 문자를 검색하고 싶었다 말한다. 당신은 이스케이프 문자를 사용하여이 작업을 수행 할 수 있습니다.

    당신은 단지 하나의 문자 (1의 길이)로 이스케이프 문자를 정의 할 수 있습니다.

    예를 들면 :

    SELECT *
    FROM suppliers
    WHERE supplier_name LIKE '!%' escape '!';
    

    이 SQL LIKE 조건 예제 식별합니다! 이스케이프 문자로 문자. 이 문장은 그의 이름 % 모든 공급 업체를 반환합니다.

    여기에 SQL LIKE 조건에서 이스케이프 문자를 사용하여 다른 더 복잡한 예이다.

    SELECT *
    FROM suppliers
    WHERE supplier_name LIKE 'H%!%' escape '!';
    

    이 SQL LIKE 조건의 예는 이름이 H로 시작 및 종료 %의 모든 공급 업체를 반환합니다. 예를 들어, 같은 '안녕 %'로 값을 반환합니다.

    또한 SQL LIKE 조건에서 _ 문자로 이스케이프 문자를 사용할 수 있습니다.

    예를 들면 :

    SELECT *
    FROM suppliers
    WHERE supplier_name LIKE 'H%!_' escape '!';
    

    이 SQL LIKE 조건의 예는 이름이 H로 시작하고 끝 _ 모든 공급 업체를 반환합니다. 예를 들어, 같은 'Hello_'로 값을 반환합니다.

    참고 : SQL / 같은

  5. ==============================

    5.

    Select * from table where name like search_criteria
    

    당신은 자신의 와일드 카드를 추가 할 수있는 사용자를 기대하는 경우 ...

  6. ==============================

    6.당신은 그것을 탈출해야합니다 많은 데이터베이스에이, 백 슬래시를 앞에 \ %를하여 수행됩니다.

    당신은 그것을 탈출해야합니다 많은 데이터베이스에이, 백 슬래시를 앞에 \ %를하여 수행됩니다.

    ABC는 ABC \ %가되도록.

    귀하의 프로그래밍 언어는 당신이 할 수있는 데이타베이스 고유의 기능을해야합니다. 예를 들어, PHP는 MySQL 데이터베이스에 대한 mysql_escape_string ()를 가지고있다.

  7. ==============================

    7.그것은 당신의 비교 값의 일부로 만들기 위해 퍼센트 기호 \ %를 탈출.

    그것은 당신의 비교 값의 일부로 만들기 위해 퍼센트 기호 \ %를 탈출.

  8. ==============================

    8.이 하나의 도움이 될 수 있습니다 :

    이 하나의 도움이 될 수 있습니다 :

    DECLARE @SearchCriteria VARCHAR(25)
    SET  @SearchCriteria = 'employee'
    IF CHARINDEX('%', @SearchCriteria) = 0
    BEGIN
    SET @SearchCriteria = '%' + @SearchCriteria + '%'
    END
    SELECT * 
    FROM Employee
    WHERE Name LIKE @SearchCriteria
    
  9. from https://stackoverflow.com/questions/10803489/sql-like-query-using-where-the-search-criteria-contains by cc-by-sa and MIT license