выберите, где like% не дает результатов, но %A выполняет php

#php #mysql #sql #select #sql-like

#php #mysql #sql #выберите #sql-подобный

Вопрос:

Моя таблица заполнена в общей сложности 40 000 строк, по крайней мере, более 2000 строк, начинающихся с буквы A .

Теперь мой SELECT запрос возвращает некоторые результаты, когда я использую

 $selectGames = mysql_query("SELECT * FROM Games WHERE GameName LIKE '%A'");
 

Но когда я использую :

 $selectGames = mysql_query("SELECT * FROM Games WHERE GameName LIKE 'A%'");
 

возвращается всего 0 строк. Почему это?

Комментарии:

1. вы вставляли% like названия игр вручную из phpmyadmin или с помощью mysql_? потому что, если вручную, вам нужно проверить, есть ли у этих значений пробелы в начале, это произошло со мной: D:/

2. Ах, я понял, вся таблица действительно вставлена mysql, и она вставила пустое пространство в конце имен, но не спереди, но это устраняет проблему

3. Gald, это сработало для вас 🙂

Ответ №1:

%A означает «где конец строки — буква А». A% является ли противоположным «строка, НАЧИНАЮЩАЯСЯ с буквы А»?

        %A   A%
APPLE  N    Y
ABBA   Y    Y
GOUDA  Y    N
 

Это совершенно разные совпадения, поэтому ваши два запроса НЕ эквивалентны.

Кроме того, убедитесь, что параметры сортировки вашей таблицы настроены на совпадение без учета регистра. Если это с учетом регистра, то a и A будет рассматриваться по-другому.

редактировать: кроме того, помните, что пробелы имеют значение:

 mysql> select 'gouda ' like '%a';
                    ^---note the space here
 -------------------- 
| 'gouda ' like '%a' |
 -------------------- 
|                  0 |
 -------------------- 
1 row in set (0.00 sec)
 

Комментарии:

1. Прекрасные фрукты, прекрасная музыка и прекрасный сыр 😉

2. да, я знаю, что это не эквивалентно, но почему A% не работает, потому что это то, что мне нужно. я попробовал%A в качестве теста, и это сработало, но мне нужно наоборот.

3. ну, сколько у вас записей, которые на самом деле ЗАКАНЧИВАЮТСЯ буквой A ? обратите внимание, что такие вещи, как abba[space] не будут совпадать, потому что эта строка заканчивается пробелом, а не a

4. я также попробовал это, сделав все результаты прописными, а также A в запросе, что также привело к 0 результатам

5. я создаю страницу, на которой вы можете выбрать букву из алфавита, которая будет брать все из базы данных, которая начинается с этой буквы