복붙노트

[SQL] 어떻게 LIKE 와일드 카드를 사용하여 열에서 (대소 문자 구분)를 검색 할 수 있습니다?

SQL

어떻게 LIKE 와일드 카드를 사용하여 열에서 (대소 문자 구분)를 검색 할 수 있습니다?

좀 둘러 보았다 내가 간다, 그래서 여기에 후 무엇 찾지 못했습니다.

SELECT * FROM trees WHERE trees.`title` LIKE  '%elm%'

이 작품 벌금, 나무는 느릅 나무 또는 느릅 나무 등 이름이 아닌 경우 ...

어떻게이 와일드 카드 검색을위한 SQL 케이스를 구분해야합니까?

나는 MySQL은 5와 아파치를 사용하고 있습니다.

해결법

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

    1.

    SELECT  *
    FROM    trees
    WHERE   trees.`title` COLLATE UTF8_GENERAL_CI LIKE '%elm%'
    

    당신이 당신의 열의 정의에 COLLATE UTF8_GENERAL_CI를 추가하면 실제로, 당신은이 모든 트릭을 생략 단지 수 있습니다 자동으로 작동합니다.

    ALTER TABLE trees 
     MODIFY COLUMN title VARCHAR(…) CHARACTER 
     SET UTF8 COLLATE UTF8_GENERAL_CI. 
    

    이것은 또한 선도 '%'없이 그들이 쿼리에 사용할 수 있도록이 칼럼에 어떤 인덱스를 다시 작성합니다

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

    2.난 항상 낮은 사용하여이 문제를 해결했습니다 :

    난 항상 낮은 사용하여이 문제를 해결했습니다 :

    SELECT * FROM trees WHERE LOWER( trees.title ) LIKE  '%elm%'
    
  3. ==============================

    3.이 사건 감도는 열 / 테이블 / 데이터베이스 데이터 정렬 설정에서 정의됩니다. 당신은 다음과 같은 방법으로 특정 데이터 정렬에서 쿼리를 수행 할 수 있습니다

    이 사건 감도는 열 / 테이블 / 데이터베이스 데이터 정렬 설정에서 정의됩니다. 당신은 다음과 같은 방법으로 특정 데이터 정렬에서 쿼리를 수행 할 수 있습니다

    SELECT *
    FROM trees
    WHERE trees.`title` LIKE '%elm%' COLLATE utf8_general_ci
    

    예를 들어.

    (당신이 유용 어떤 조합으로 utf8_general_ci 교체). _ci 사례를 구분을 의미합니다.

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

    4.이것은 간단한 LIKE 쿼리의 예입니다 :

    이것은 간단한 LIKE 쿼리의 예입니다 :

    SELECT * FROM <table> WHERE <key> LIKE '%<searchpattern>%'
    

    자, 대소 문자를 구분하지 LOWER () FUNC를 사용하여 :

    SELECT * FROM <table> WHERE LOWER(<key>) LIKE LOWER('%<searchpattern>%')
    
  5. ==============================

    5.간단하게 사용

    간단하게 사용

    "SELECT * FROM `trees` WHERE LOWER(trees.`title`) LIKE  '%elm%'";
    

    또는 사용

    "SELECT * FROM `trees` WHERE LCASE(trees.`title`) LIKE  '%elm%'";
    

    두 함수 모두 동일하게 작동합니다

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

    6.나는 그런 일을하고 있어요.

    나는 그런 일을하고 있어요.

    소문자 값을 얻기와 MySQL 나머지는 않습니다

        $string = $_GET['string'];
        mysqli_query($con,"SELECT *
                           FROM table_name
                           WHERE LOWER(column_name)
                           LIKE LOWER('%$string%')");
    

    그리고 MySQL을 PDO 대안 :

            $string = $_GET['string'];
            $q = "SELECT *
                  FROM table_name
                  WHERE LOWER(column_name)
                  LIKE LOWER(?);";
            $query = $dbConnection->prepare($q);
            $query->bindValue(1, "%$string%", PDO::PARAM_STR);
            $query->execute();
    
  7. ==============================

    7.나는이 쿼리는 대소 문자를 구분 검색을 할 것이라고 생각 :

    나는이 쿼리는 대소 문자를 구분 검색을 할 것이라고 생각 :

    SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
    
  8. ==============================

    8.당신은 모든 테이블을 변경할 필요가 없습니다. 그냥 당신이 와일드 카드를 사용하려는 전에 실제 SELECT 질의에 다음과 같은 쿼리를 사용 :

    당신은 모든 테이블을 변경할 필요가 없습니다. 그냥 당신이 와일드 카드를 사용하려는 전에 실제 SELECT 질의에 다음과 같은 쿼리를 사용 :

        set names `utf8`;
        SET COLLATION_CONNECTION=utf8_general_ci;
        SET CHARACTER_SET_CLIENT=utf8;
        SET CHARACTER_SET_RESULTS=utf8;
    
  9. ==============================

    9.사용 ILIKE

    사용 ILIKE

    SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
    

    그것은 나를 위해 일한!

  10. ==============================

    10.또한 운영자와 같은 MySQL은 5.5에서 베일 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 기타입니다 그렇다면 ... 구분하지 않습니다, 당신은, 모든 일치하는 값을 나열합니다 '% 느릅 %'처럼 사용합니다.

    또한 운영자와 같은 MySQL은 5.5에서 베일 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 기타입니다 그렇다면 ... 구분하지 않습니다, 당신은, 모든 일치하는 값을 나열합니다 '% 느릅 %'처럼 사용합니다.

    나는 MySQL의 이전 버전에 대해 말할 기운 다.

    당신이 오라클에 가면 '% 느릅 %', 그것은이 만 가서 uppercases을 무시처럼, 대소 문자 구분 등의 작업처럼, 그래서 당신은 입력하면 ..

    이상한, 그러나 이것은 그것이 얼마나입니다 :)

  11. ==============================

    11.

    SELECT name 
           FROM gallery 
           WHERE CONVERT(name USING utf8) LIKE _utf8 '%$q%' 
           GROUP BY name COLLATE utf8_general_ci LIMIT 5 
    
  12. ==============================

    12.당신은 당신의 테이블에 대한 적절한 인코딩 및 데이터 정렬을 설정해야합니다.

    당신은 당신의 테이블에 대한 적절한 인코딩 및 데이터 정렬을 설정해야합니다.

    표 인코딩은 실제 데이터 인코딩을 반영해야한다. 데이터 인코딩은 무엇입니까?

    테이블 인코딩을 확인하려면, 당신은 쿼리 SHOW는 표 TABLENAME을 만들 실행할 수 있습니다

  13. ==============================

    13.내가 대소 문자를 구분 검색을 개발하고자 할 때, 나는 항상 비교를하기 전에 소문자로 모든 문자열을 변환

    내가 대소 문자를 구분 검색을 개발하고자 할 때, 나는 항상 비교를하기 전에 소문자로 모든 문자열을 변환

  14. ==============================

    14.다음과 같은 방법을 사용할 수 있습니다

    다음과 같은 방법을 사용할 수 있습니다

     private function generateStringCondition($value = '',$field = '', $operator = '', $regex = '', $wildcardStart = '', $wildcardEnd = ''){
            if($value != ''){
                $where = " $field $regex '$wildcardStart".strtolower($value)."$wildcardEnd' ";
    
                $searchArray = explode(' ', $value);
    
                if(sizeof($searchArray) > 1){
    
                    foreach ($searchArray as $key=>$value){
                        $where .="$operator $field $regex '$wildcardStart".strtolower($value)."$wildcardEnd'";
                    }
    
                }
    
            }else{
                $where = '';
            }
            return $where;
        }
    

    다음과 같은이 방법을 사용

       $where =  $this->generateStringCondition($yourSearchString,  'LOWER(columnName)','or', 'like',  '%', '%');
      $sql = "select * from table $where";
    
  15. from https://stackoverflow.com/questions/2876789/how-can-i-search-case-insensitive-in-a-column-using-like-wildcard by cc-by-sa and MIT license