带有十进制值的MySQL SELECT

时间:2013-12-04 21:37:28

标签: php mysql sql select decimal

我正在尝试从包含DECIMAL值的MySQL表中选择一行。

我打电话的时候:

SELECT * FROM some_table WHERE  submit_time='1386163272.2866' LIMIT 1

正确选择行。但是当我试图让这个选择更加具体时:

SELECT * FROM some_table  WHERE  submit_time='1386163272.2866' AND field_name='stan' LIMIT 1

它不会返回任何结果。

submit_time字段为DECIMAL(16,4)field_nameVARCHAR。当然有一行具有submit_time / field_name值的组合(我通过phpmyadmin检查)

我哪里出错了?

修改

查询:

SELECT * FROM some_table  WHERE  field_name='stan' 

也会返回一行。

使用Vincent's suggestion以下查询:

SELECT * FROM some_table  WHERE  submit_time='1386163272.2866' AND field_name LIKE '%stan%' LIMIT 1

返回了我想要的行,但我现在想要更新此行中的一些值,所以我正在尝试以下查询:

UPDATE some_table SET field_value='1' WHERE  submit_time='1386163272.2866' AND field_name LIKE '%stan%' LIMIT 1

但它说“没有受影响的行”。

好的,当我从'查询中删除WHERE时,它就可以了:

UPDATE some_table SET field_value='1' WHERE  submit_time=1386163272.2866 AND field_name LIKE '%stan%' LIMIT 1

2 个答案:

答案 0 :(得分:1)

尝试替换

field_name='stan' 

field_name LIKE '%stan%'

确定'field_name'字段中是否有空格。然后从那里修复它。

答案 1 :(得分:1)

如果submit_time是双数据类型,那么你应该选择它作为像这样的双重类型

SELECT * FROM some_table  WHERE  submit_time=1386163272.2866

而不像你正在做的varchar / char(MYSQL的隐式类型转换是令人讨厌的,如果MySQL不能使用索引,这个“功能”将花费你的性能,因为这个) 下面的查询并不是您想要使用的

SELECT * FROM some_table  WHERE  submit_time='1386163272.2866'

您的空白问题(更新表中的所有field_value列)

UPDATE some_table SET field_value = TRIM(field_value);