2

グーグルで調べた後、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はフロート値で不正行為をしていますか?

4

1 に答える 1