mysql простое предложение where не работает?

#mysql #sql

#mysql #sql

Вопрос:

 Database changed

mysql> select * from userinfo;
 ----------- ---------- ----------------------- ------------ 
| firstname | lastname | username              | password   |
 ----------- ---------- ----------------------- ------------ 
|  asif     |  kolu    |  ashufound            |  123456    |
|  faisal   |  samad   |  tfhgfhgfh@gmail.com  |  123456    |
|  kamran   |  shafat  |  kamthemaam           |  kamoos    |
|  ubaid    |  mir     |  sadfsfsff@yahoo.com  |  qwertasd  |
|  majid    |  mir     |  zsffsa               |  afdfdsf   |
 ----------- ---------- ----------------------- ------------ 
5 rows in set (0.00 sec)

mysql> SELECT  * from userinfo WHERE lastname = 'mir';
Empty set (0.10 sec)

mysql> SELECT  * from userinfo WHERE lastname='mir';
Empty set (0.00 sec)
 

что не так с этим простым предложением кода where, которое не работает?на самом деле проблема заключается в коде для вставки, я думаю

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

1. Вы уверены, что в lastname нет пробела в конце?

2. Можете ли вы попробовать с SELECT * from userinfo WHERE last name LIKE '%mir%' помощью?

3. @echo_Me: Я что-нибудь говорил о решении? Это просто способ понять, есть ли лишние пробелы. Он также может использовать TRIM для его проверки, если вы хотите что-то более точное.

4. яа смог это и спасибо, но на самом деле я ввожу данные из формы struts, и теперь я понятия не имею, что происходит

5. Я рад, что вы не храните пароли в виде обычного текста

Ответ №1:

ваша фамилия в вашей таблице может иметь пробел до или после mir

    mir
  ^---^---look and remove spaces from here in your table
 

Ответ №2:

Я использую запрос select в этом предложении where не работает запрос

выберите * из table_t, где id = '96'

этот запрос выдает 0 строк, но

когда я пытаюсь

выберите * из table_t, где идентификатор похож на '96'

этот запрос работает нормально.

и когда я пытаюсь, например, с именем столбца, например

выберите идентификатор из table_t, где идентификатор похож на '96'

возвращает 0 строк

идентификатор автоматически генерируется первичным ключом без пробелов

почему???? есть ли какие-либо проблемы с базой данных??? этот запрос отлично работает на моем локальном компьютере, но когда я пробую его онлайн, он ведет себя неправильно.

Спасибо.

Ответ №3:

1- У вас может быть пробел до или после «mir».

2- У вас могут быть специальные (невидимые) символы до или после ‘mir’ или даже между его символами.

Чтобы решить эту проблему, я предлагаю сначала сделать это:

 Update userinfo
    set lastname = 'mir' 
    where (username = 'sadfsfsff@yahoo.com') or (username = 'zsffsa')
 

А затем запустите это, чтобы проверить:

 Select * from userinfo where lastname = 'mir'
 

Ответ №4:

Я вижу несколько хороших ответов, но в случае, если вы не смогли обновить начальные или конечные пробелы во всей вашей базе данных для каждого имени, вы могли бы написать select немного по-другому. Если это проблема с пробелом, попробуйте это.

 SELECT  * from userinfo WHERE TRIM(lastname) = TRIM('mir')
 

Если это не сработает, попробуйте LIKE и посмотрите, получите ли вы результаты. Это может помочь в отладке.

 SELECT * FROM userinfo WHERE lastname LIKE '%mir%'