복붙노트

[SQL] MySQL의 쿼리 문자열이 포함되어

SQL

MySQL의 쿼리 문자열이 포함되어

나는 검사가 특정 열의 값 (문자열 $ 건초 더미)이이 같은 특정 데이터 (문자열 $ 바늘)를 포함하는 경우 것이 MySQL을 사용하여 쿼리를 만들 수있는 방법을 알아 내기 위해 노력했습니다 :

mysql_query("
SELECT *
FROM `table`
WHERE `column`.contains('{$needle}')
");

PHP에서 함수는 어쩌면, SUBSTR ($ 건초 더미, $ 바늘)라고합니다 :

WHERE substr(`column`, '{$needle}')=1

해결법

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

    1.실제로 매우 간단합니다 :

    실제로 매우 간단합니다 :

    mysql_query("
    SELECT *
    FROM `table`
    WHERE `column` LIKE '%{$needle}%'
    ");
    

    이 %이 설정 한 문자 (없음, 하나 또는 다수)을위한 와일드 카드입니다. 이 데이터베이스는 전체 텍스트 인덱스를 사용해야합니다 성장 그렇다면 매우 큰 데이터 세트에 느린 얻을 수 있습니다를 수행합니다.

  2. ==============================

    2.사용하다:

    사용하다:

    SELECT *
      FROM `table`
     WHERE INSTR(`column`, '{$needle}') > 0
    

    참고:

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

    3.

    WHERE `column` LIKE '%$needle%'
    
  4. ==============================

    4.광산은 MySQL의에서 찾은 사용하고 있습니다 :

    광산은 MySQL의에서 찾은 사용하고 있습니다 :

    이 기능은 멀티 바이트 안전하고, 대소 문자를 구분 적어도 하나 개의 인수가 바이너리 문자열 인 경우에만입니다.

    귀하의 경우 :

    mysql_query("
    SELECT * FROM `table`
    WHERE LOCATE('{$needle}','column') > 0
    ");
    
  5. ==============================

    5.@WoLpH의 대답에 추가.

    @WoLpH의 대답에 추가.

    사용하는 경우 LIKE 당신은 또한 어느 방향으로 문자열 일치를 제한 할 수있는 능력을 가지고 키워드. 예를 들면 :

    당신은 당신의 $ 바늘로 시작하는 문자열을 찾고있는 경우 :

    ... WHERE column LIKE '{$needle}%'
    

    당신은 그 $ 바늘 끝 문자열을 찾고있는 경우 :

    ... WHERE column LIKE '%{$needle}'
    
  6. ==============================

    6.이 위험하다주의 :

    이 위험하다주의 :

    WHERE `column` LIKE '%{$needle}%'
    

    첫째 수행

    $needle = mysql_real_escape_string($needle);
    

    그래서 가능한 공격을 방지 할 수 있습니다.

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

    7.당신은 아마 FIND_IN_SET 기능을 찾고 있습니다 :

    당신은 아마 FIND_IN_SET 기능을 찾고 있습니다 :

    Where find_in_set($needle,'column') > 0
    

    이 기능은 PHP에서와 in_array 함수와 같은 역할을

  8. from https://stackoverflow.com/questions/2602252/mysql-query-string-contains by cc-by-sa and MIT license