[SQL] 어떻게 LIKE 와일드 카드를 사용하여 열에서 (대소 문자 구분)를 검색 할 수 있습니다?
SQL어떻게 LIKE 와일드 카드를 사용하여 열에서 (대소 문자 구분)를 검색 할 수 있습니다?
좀 둘러 보았다 내가 간다, 그래서 여기에 후 무엇 찾지 못했습니다.
SELECT * FROM trees WHERE trees.`title` LIKE '%elm%'
이 작품 벌금, 나무는 느릅 나무 또는 느릅 나무 등 이름이 아닌 경우 ...
어떻게이 와일드 카드 검색을위한 SQL 케이스를 구분해야합니까?
나는 MySQL은 5와 아파치를 사용하고 있습니다.
해결법
-
==============================
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.난 항상 낮은 사용하여이 문제를 해결했습니다 :
난 항상 낮은 사용하여이 문제를 해결했습니다 :
SELECT * FROM trees WHERE LOWER( trees.title ) LIKE '%elm%'
-
==============================
3.이 사건 감도는 열 / 테이블 / 데이터베이스 데이터 정렬 설정에서 정의됩니다. 당신은 다음과 같은 방법으로 특정 데이터 정렬에서 쿼리를 수행 할 수 있습니다
이 사건 감도는 열 / 테이블 / 데이터베이스 데이터 정렬 설정에서 정의됩니다. 당신은 다음과 같은 방법으로 특정 데이터 정렬에서 쿼리를 수행 할 수 있습니다
SELECT * FROM trees WHERE trees.`title` LIKE '%elm%' COLLATE utf8_general_ci
예를 들어.
(당신이 유용 어떤 조합으로 utf8_general_ci 교체). _ci 사례를 구분을 의미합니다.
-
==============================
4.이것은 간단한 LIKE 쿼리의 예입니다 :
이것은 간단한 LIKE 쿼리의 예입니다 :
SELECT * FROM <table> WHERE <key> LIKE '%<searchpattern>%'
자, 대소 문자를 구분하지 LOWER () FUNC를 사용하여 :
SELECT * FROM <table> WHERE LOWER(<key>) LIKE LOWER('%<searchpattern>%')
-
==============================
5.간단하게 사용
간단하게 사용
"SELECT * FROM `trees` WHERE LOWER(trees.`title`) LIKE '%elm%'";
또는 사용
"SELECT * FROM `trees` WHERE LCASE(trees.`title`) LIKE '%elm%'";
두 함수 모두 동일하게 작동합니다
-
==============================
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.나는이 쿼리는 대소 문자를 구분 검색을 할 것이라고 생각 :
나는이 쿼리는 대소 문자를 구분 검색을 할 것이라고 생각 :
SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
-
==============================
8.당신은 모든 테이블을 변경할 필요가 없습니다. 그냥 당신이 와일드 카드를 사용하려는 전에 실제 SELECT 질의에 다음과 같은 쿼리를 사용 :
당신은 모든 테이블을 변경할 필요가 없습니다. 그냥 당신이 와일드 카드를 사용하려는 전에 실제 SELECT 질의에 다음과 같은 쿼리를 사용 :
set names `utf8`; SET COLLATION_CONNECTION=utf8_general_ci; SET CHARACTER_SET_CLIENT=utf8; SET CHARACTER_SET_RESULTS=utf8;
-
==============================
9.사용 ILIKE
사용 ILIKE
SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
그것은 나를 위해 일한!
-
==============================
10.또한 운영자와 같은 MySQL은 5.5에서 베일 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 기타입니다 그렇다면 ... 구분하지 않습니다, 당신은, 모든 일치하는 값을 나열합니다 '% 느릅 %'처럼 사용합니다.
또한 운영자와 같은 MySQL은 5.5에서 베일 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 느릅 나무 또는 기타입니다 그렇다면 ... 구분하지 않습니다, 당신은, 모든 일치하는 값을 나열합니다 '% 느릅 %'처럼 사용합니다.
나는 MySQL의 이전 버전에 대해 말할 기운 다.
당신이 오라클에 가면 '% 느릅 %', 그것은이 만 가서 uppercases을 무시처럼, 대소 문자 구분 등의 작업처럼, 그래서 당신은 입력하면 ..
이상한, 그러나 이것은 그것이 얼마나입니다 :)
-
==============================
11.
SELECT name FROM gallery WHERE CONVERT(name USING utf8) LIKE _utf8 '%$q%' GROUP BY name COLLATE utf8_general_ci LIMIT 5
-
==============================
12.당신은 당신의 테이블에 대한 적절한 인코딩 및 데이터 정렬을 설정해야합니다.
당신은 당신의 테이블에 대한 적절한 인코딩 및 데이터 정렬을 설정해야합니다.
표 인코딩은 실제 데이터 인코딩을 반영해야한다. 데이터 인코딩은 무엇입니까?
테이블 인코딩을 확인하려면, 당신은 쿼리 SHOW는 표 TABLENAME을 만들 실행할 수 있습니다
-
==============================
13.내가 대소 문자를 구분 검색을 개발하고자 할 때, 나는 항상 비교를하기 전에 소문자로 모든 문자열을 변환
내가 대소 문자를 구분 검색을 개발하고자 할 때, 나는 항상 비교를하기 전에 소문자로 모든 문자열을 변환
-
==============================
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";
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
'SQL' 카테고리의 다른 글
[SQL] 엑스 코드 4 코어 데이터 : SQL 디버깅을 가능하게하는 방법 (0) | 2020.03.19 |
---|---|
[SQL] 어떻게 SQL에서 달 1 일을 선택할 수 있습니다? (0) | 2020.03.19 |
[SQL] 삭제하거나 부모 행을 업데이트 할 수 없습니다 : 외래 키 제약 조건이 실패 (0) | 2020.03.19 |
[SQL] 빠른 게 뭔데, MySQL의에서 DISTINCT 또는 GROUP BY를 선택? (0) | 2020.03.19 |
[SQL] 포스트 그레스 : 목록 테이블 외래 키에 SQL (0) | 2020.03.19 |