グーグルで調べた後、PDOのPHP仕様に従って、PDO_SQLSRVが文字列値を返すことを発見しました
しかし、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はフロート値で不正行為をしていますか?