mysql简单where子句不起作用?

时间:2014-06-21 20:12:53

标签: 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子句不起作用?实际上问题出在插入的代码中我认为

4 个答案:

答案 0 :(得分:1)

您桌面上的姓氏在mir

之前或之后可能有空格
   mir
  ^---^---look and remove spaces from here in your table

答案 1 :(得分:1)

我在这里选择了查询,其中where子句不工作查询是

select * from table_t where id = '96'

此查询产生0行但

当我尝试

select * from table_t where id like '96'

此查询工作正常。

当我尝试像

这样的列名时
select id from table_t where id like '96'

返回0行

id是自动生成的主键没有空格

为什么???? 有任何数据库问题??? 这个查询在我的本地机器上运行正常,但是当我在网上尝试它时会出现行为异常。

感谢名单。

答案 2 :(得分:0)

1-你可以在" mir"。

之前或之后留出空间

2-你可能会在' mir'之前或之后有特殊(不可见)字符。甚至在它们的角色之间。

要解决这个问题,我建议先这样做:

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

然后,运行此检查:

Select * from userinfo where lastname = 'mir'

答案 3 :(得分:0)

我看到了一些很好的答案,但是如果您无法为每个名称更新整个数据库中的前导或尾随空格,则可以稍微改写一下选择。如果是空间问题,请试试这个。

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

如果这不起作用,请尝试LIKE,看看是否有结果。这可能有助于调试。

SELECT * FROM userinfo WHERE lastname LIKE '%mir%'
相关问题