2

谷歌搜索后,我发现 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 是否使用浮点值作弊?

4

1 回答 1

0

对于 SQL Server,您需要使用 STR 而不是 CAST 转换为 VARCHAR:

选择 STR(MyField,10,2)

资料来源:http: //jwcooney.com/2013/09/25/sql-server-rounds-floats-when-casting-to-varchar/

于 2015-04-24T15:51:45.067 回答