Jak mogę wyszukiwać (bez rozróżniania wielkości liter) w kolumnie używając jak wildcard?
Rozejrzałem się i nie znalazłem tego, czego szukałem, więc proszę bardzo.
SELECT * FROM trees WHERE trees.`title` LIKE '%elm%'
To działa dobrze, ale nie jeśli drzewo nazywa się Elm lub ELM itp...
Jak sprawić, by wielkość liter SQL była niewrażliwa na to wyszukiwanie?
Używam MySQL 5 i Apache.
12 answers
SELECT *
FROM trees
WHERE trees.`title` COLLATE UTF8_GENERAL_CI LIKE '%elm%'
Właściwie, jeśli dodasz COLLATE UTF8_GENERAL_CI
do definicji kolumny, możesz po prostu pominąć wszystkie te sztuczki: będzie działać automatycznie.
ALTER TABLE trees
MODIFY COLUMN title VARCHAR(…) CHARACTER
SET UTF8 COLLATE UTF8_GENERAL_CI.
Spowoduje to również przebudowanie indeksów w tej kolumnie, aby mogły być używane do zapytań bez wiodącego " % "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-25 07:24:44
Zawsze rozwiązywałem to używając lower:
SELECT * FROM trees WHERE LOWER( trees.title ) LIKE '%elm%'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 18:41:22
Wielkość liter jest zdefiniowana w Ustawieniach zestawiania kolumn / tabel / baz danych. Możesz wykonać zapytanie pod określonym zestawieniem w następujący sposób:
SELECT *
FROM trees
WHERE trees.`title` LIKE '%elm%' COLLATE utf8_general_ci
Na przykład.
(Zastąp utf8_general_ci
dowolnym zestawieniem, które uznasz za przydatne). _ci
oznacza niewrażliwe na wielkość liter .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-30 06:44:01
Oto przykład prostego zapytania typu:
SELECT * FROM <table> WHERE <key> LIKE '%<searchpattern>%'
Teraz, wielkość liter jest niewrażliwa na LOWER () func:
SELECT * FROM <table> WHERE LOWER(<key>) LIKE LOWER('%<searchpattern>%')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-19 20:50:25
Robię coś takiego.
Pobieranie wartości małymi literami i MySQL robi resztę
$string = $_GET['string'];
mysqli_query($con,"SELECT *
FROM table_name
WHERE LOWER(column_name)
LIKE LOWER('%$string%')");
I dla MySQL PDO alternatywa:
$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();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-21 09:02:14
Myślę, że to zapytanie wykona wyszukiwanie bez rozróżniania wielkości liter:
SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-13 15:05:39
Po prostu użyj:
"SELECT * FROM `trees` WHERE LOWER(trees.`title`) LIKE '%elm%'";
Lub Użyć
"SELECT * FROM `trees` WHERE LCASE(trees.`title`) LIKE '%elm%'";
obie funkcje działają tak samo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-09 11:50:10
Nie musisz ALTER
żadnej tabeli. Po prostu użyj następujących zapytań, przed rzeczywistym zapytaniem SELECT
, które chcesz użyć symbolu wieloznacznego:
set names `utf8`;
SET COLLATION_CONNECTION=utf8_general_ci;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-22 09:52:56
Musisz ustawić odpowiednie kodowanie i zestawianie tabel.
Kodowanie tabeli musi odzwierciedlać rzeczywiste kodowanie danych. Jakie jest twoje kodowanie danych?
Aby zobaczyć kodowanie tabeli, możesz uruchomić zapytanie SHOW CREATE TABLE tablename
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 18:42:16
Kiedy chcę rozwijać niewrażliwe wyszukiwanie wielkości liter, zawsze konwertuję każdy ciąg znaków na małe litery przed wykonaniem comparasion
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 19:07:44
Dobrze w mysql 5.5, jak operator jest insensitive...so jeśli twoja vale to elm lub ELM lub Elm lub eLM lub jakikolwiek inny, i używasz " %elm%", wyświetli wszystkie pasujące wartości.
Nie mogę powiedzieć o wcześniejszych wersjach mysql.
Jeśli wejdziesz do Oracle, np. work jako case-sensitive, więc jeśli wpiszesz " % elm%", będzie to tylko dla tego i zignoruje wielkie litery..
Dziwne, ale tak to jest :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-24 12:29:16
SELECT name
FROM gallery
WHERE CONVERT(name USING utf8) LIKE _utf8 '%$q%'
GROUP BY name COLLATE utf8_general_ci LIMIT 5
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-28 12:52:25