2010-09-01 148 views
0

我有一个表称为记录有几列,其中之一是从代表电话号码的phone。我可以运行此查询来查看不同的电话号码:mysql查询没有给出正确的结果

SELECT DISTINCT fromphone 
FROM records 

它显示不同的电话号码。

但是,如果我运行此查询:

SELECT * 
FROM records 
WHERE fromphone = '123-456-7890' 

其中fromphone是在表中的电话号码,没有结果得到恢复。

+1

fromphone列的数据类型是什么?请发布您的表格架构。 – 2010-09-01 18:33:55

+1

也许它的格式是你的电话号码存储,所以没有找到完全匹配。你为什么不尝试使用 - SELECT * FROM WHERE ATphone LIKE'%<全部或部分电话号码>%' – pavanred 2010-09-01 18:36:19

+0

对于数据中的前后空格,你甚至可以尝试使用 - WHERE LTRIM(RTIRM(fromphone) )='123-456-7890' – pavanred 2010-09-01 18:45:59

回答

0

您确定在数据库表中有电话号码为123-456-7890的记录吗?它可能有一些前导空间或尾随空间。

尝试使用LIKE%%运营商,像这样做:

SELECT * 
FROM records 
WHERE fromphone LIKE '%123-456-7890%' 
+0

工作。不知道为什么/如何引导或尾随的空间在那里 – JPC 2010-09-01 18:49:40

1

最可能的情况是完全匹配的字符串,“123-456-7890”不在此列。尝试使用LIKE而不是=,以防万一有一些额外的空间或者导致等于不匹配电话号码的东西。

0

如果你前/后间隔,你可以使用TRIM()

SELECT * 
FROM records 
WHERE TRIM(fromphone) = '123-456-7890' 

使用LIKE与领先的,如果你在记录表,因为有很多行的尾随通配符可以变得非常慢当你这样做时,MySQL必须进行全表扫描。