谷歌搜索后,我发现 PDO_SQLSRV 返回字符串值,根据 PDO 的 php 规范
但是,当 sql 查询将值转换为 varchar 时,为什么 PDO 返回的值与 sql 不同?
PHP:
myDbWrapperFunction("SELECT CAST(CAST(0.03 as varchar(250))as FLOAT)"); // 2.9999999999999999E-2
myDbWrapperFunction("SELECT 0.03"); // .03
myDbWrapperFunction("SELECT CAST(0.03 as varchar(250))"); // 0.03
然而,在 SQL 本身中:
select cast(cast(0.03 as varchar(250))as float) //0.03
select cast(0.03 as varchar(250)) //0.03
select 0.03 //0.03
我希望
myDbWrapperFunction("SELECT CAST(CAST(0.03 as varchar(250))as FLOAT)"); // 2.9999999999999999E-2
返回相同的值
select cast(0.03 as varchar(250)) //0.03
sql 是否使用浮点值作弊?