如何检查空格/制表符是否在变量前面?

时间:2014-09-25 13:18:46

标签: mysql

我有以下sql查询:

select date, apptemp from weather where apptemp = '20.1';

Empty set (0.05 sec)

如果我再跑:

select date, apptemp from weather where apptemp like '%20.1';

+---------------------+---------+
| date                | apptemp |
+---------------------+---------+
| 2014-09-24 15:18:43 |    20.1 |
| 2014-09-24 16:23:41 |    20.1 |
| 2014-09-25 14:08:57 |    20.1 |
+---------------------+---------+

我认为可能是因为数字前面有空格,但' 20.1'' 20.1'也不会产生结果。

我怎样才能看到20.1前面的角色是什么?

更新:谢谢 - 我已经尝试过HEX了:

mysql> SELECT date, apptemp, HEX(apptemp) FROM weather;

是吗?

+---------------------+---------+--------------+
| date                | apptemp | HEX(apptemp) |
+---------------------+---------+--------------+
| 2014-09-25 14:19:04 |    21.4 | 15           |
| 2014-09-25 14:24:02 |    21.3 | 15           |
| 2014-09-25 14:28:57 |    20.8 | 15           |
| 2014-09-25 14:34:02 |    21.4 | 15           |
| 2014-09-25 14:38:59 |    21.2 | 15           |
+---------------------+---------+--------------+

更新2:

似乎与之相关。 - 如果我这样做

select date, apptemp from weather where apptemp = '20';

返回正确的数据。

" 20.1" - 才不是。

2 个答案:

答案 0 :(得分:2)

我使用HEX函数:

SELECT HEX(apptemp) FROM weather;

这将以十六进制显示列的值。要查找的键十六进制值为00(ASCII NUL),09(制表符)和20(空格),但有许多其他“不可见”值。

查询列及其十六进制值可能更容易,因此您可以看到该值的普通和极客版本:

SELECT apptemp, HEX(apptemp) FROM weather;

答案 1 :(得分:0)

感谢十六进制提示。

似乎是因为数据类型是浮点数而引起的。

mysql float data not selecting in where clause

设置为十进制,现在可以正常工作。