--disable_warnings drop table if exists t1, t2 ; --enable_warnings create table t1 ( my_test varchar(100), my_col longtext) ; ## here comes the insert causing the strange result set @arg00=1.0; insert into t1 set my_test= 'non PS, 1.0 in parameter',my_col = @arg00 ; # Some logically similar commands prepare stmt1 from "insert into t1 set my_test='PS,1.0 in parameter',my_col=?"; execute stmt1 using @arg00 ; insert into t1 set my_test= 'non PS, 1.0 as constant',my_col=1.0; prepare stmt1 from "insert into t1 set my_test='PS,1.0 as constant',my_col=1.0"; execute stmt1 ; select my_test, my_col from t1 ; # Why do I beleave that @arg00 is treated as DOUBLE ? create table t2 as select 1.0 as my_const, @arg00 as my_param ; show create table t2 ;