#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%'