在字段中插入值时出错

时间:2012-01-24 13:04:28

标签: mysql

我在mysql中创建了一个表Place。在此表中有三个字段。

1. Place_Name varchar(20)
2. latitude  decimal(15,12)
3. longitude decimal(15,12)

当用户在纬度或经度中插入55636.1232之类的值时会出现问题。

因为此值高于这些字段的容量范围。因为我允许3

当用户试图在小数点前输入3位以上时,

小数点前的数字

分。在这种情况下插入999.999999999999值,但我想插入我的默认值

如果用户犯了这样的错误,请输入

值。

我希望当用户执行此类错误时,应在该记录中输入我的默认值。

请帮助我如何解决此类问题。我在等你的建议。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

您应该通过执行

将SQL模式设置为strict_all_tables
SET sql_mode='STRICT_ALL_TABLES';

这将防止输入无效数据,并且违规将抛出此MySQL错误:

  

第1行“纬度”列的超出范围值

答案 1 :(得分:0)

你可以在你的mysql语句中写一个case语句。

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

http://dev.mysql.com/doc/refman/5.0/en/case-statement.html

所以在你的情况下,你可能会写一些类似的东西:

Insert Into coordinates (Place_Name,latitude,longitude) 
Values 
('$name',
Case $latitude When $latitude > 99.999 Then '$defaultLat' Else '$latitude' End Case, 
Case $longitude When $longitude > 99.999 Then '$defaultLong' Else '$longitude' End Case);