【问题标题】:phpMyAdmin single quote not return resultphpMyAdmin 单引号不返回结果
【发布时间】:2012-05-23 09:16:34
【问题描述】:

当我尝试时:

SELECT * FROM user WHERE phone = 60123456789

phpMyAdmin 返回结果,但是当我尝试时:

SELECT * FROM user WHERE phone = '60123456789'

phpMyAdmin 返回一个空结果。列类型 varchar。

如何使它与单引号一起使用?我是否错误地设置了结构中的类型?

【问题讨论】:

  • 数据库本身的值如何?是60123456789吗?
  • 获得了数千条数据,但其中大部分是 11 位数字。我需要它作为 varchar,因为有些数据前面包含 + .. 目前我只是将其设为 varchar(255)
  • 我的问题 1) 你在 DB 中有那条记录吗? 2) 你能把你的表格记录贴在这里吗? 3)你能把你的错误贴在这里吗?
  • 3) phpMyAdmin 只返回空。没有错误。谢谢你:)

标签: mysql phpmyadmin


【解决方案1】:

试试

SELECT * FROM user WHERE phone like '60123456789%'

如果这样有效,那么您的列中有尾随空格

您可以使用删除它们

update user set phone = replace(phone, ' ', '')

编辑

例子:

尾随空格:

'123  '

前导空格:

'  123'

【讨论】:

  • 你能告诉我什么是尾随空格吗??
  • 尾随空格是后面的空格。前导空格是之前的空格。
  • 实际上不是尾随空格,而是每个电话号码的尾随外星字符。还是不知道是什么角色,看不出来。我尝试了您的建议并将其更改为 varchar(11),删除所有 + 号。它现在正在工作。
  • 当我导出数据时,我发现 \r 作为尾随字符。谢谢。
【解决方案2】:

如果您只使用整数值,请将结构中的列类型 varchar 从 varchar 更改为 int

那么两者都可以工作

SELECT * FROM user WHERE phone = 60123456789

SELECT * FROM user WHERE phone = '60123456789'

更新我正在使用 Varchar(225)

喜欢

SELECT * 
FROM  `tbl_practice` 
WHERE  `name` =  '+5734563656546'
LIMIT 0 , 30

SELECT * 
FROM  `tbl_practice` 
WHERE  `name` =  +5734563656546
LIMIT 0 , 30


SELECT * 
FROM  `tbl_practice` 
WHERE  `name` =  5734563656546
LIMIT 0 , 30

我不知道你为什么会遇到这个问题?

【讨论】:

  • 部分数据包含+60123456789(加号)
  • @user1385778 也许对你的数据进行清理可能会很有用,这样所有或都不包含+。或者,或者,WHERE PHONE LIKE '%60123456789' - 但是这个搜索不能使用索引,所以很糟糕。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多