2014-11-20 46 views
0

所以我知道,在SQL Server中,如果某个过程期望得到一个varchar(5)并且它收到'123456',它将自动截断为'12345'。这是否也发生在MySQL?MySQL是否在存储过程中截断参数?

+0

当你尝试过什么? – 2014-11-20 22:16:33

+0

它应该因为大小被指定为5. – Rahul 2014-11-20 22:17:07

回答

2
+0

所以你的意思是,基于'sql_mode'设置截断不会发生?这是一个奇怪的特征。 – Rahul 2014-11-20 22:22:46

+0

@Rahul一些'sql_mode'设置是严格的,会抛出一个错误,而不是静静地截断内容。如果您使用敏感数据,这可能很重要 - 因为类型不匹配,您确实不希望将错误的银行余额插入某人的帐户。 – ceejayoz 2014-11-20 22:34:54

+0

这就是我的意思,它应该始终限制。以你的银行为例...如果这是一个完整性约束,取款金额<= 5位数字,如果它允许6位数字,则由sql_mode执行,那么我们在哪里? – Rahul 2014-11-20 22:40:05