我有一个PHP查询,到目前为止工作良好。例如,对于值为0.5,如果没有零,我只能得到0.5。我该怎么做呢?以下是我的查询示例
$query ="SELECT TOP 60 z.plan_auftrag, b.aunr, m.artikel, b.user_n_07,b.user_c_47, b.user_n_08,
b.erranf_dat, b.erranf_zeit, s.a_status,m.bez_1, m.bez_2, b.user_f_25,b.user_f_26,b.user_c_48,
b.user_c_49, b.user_c_56";
$query.=" FROM [hydra1].[hydadm].[v_auftrags_zusatz] z";
$query.=" JOIN [hydra1].[hydadm].[auftrags_bestand] b";
$query.=" ON z.auftrag_nr = b.aunr";
$query.=" JOIN [hydra1].[hydadm].[v_auftrag_status] s";
$query.=" ON b.auftrag_nr = s.auftrag_nr";
$query.=" JOIN [hydra1].[hydadm].[mlst_hy] m";
$query.=" ON s.auftrag_nr = m.auftrag_nr";
$query.=" WHERE s.masch_nr = 'QTA2'";
$query.=" AND s.a_status IN ('V','L','U')";
$query.=" AND m.kennz = 'M'";
$query.=" AND s.eingeplant = ('M')";
$query.=" AND b.a_typ IN ('AU','AG')";
$query.=" ORDER BY s.a_status ASC, b.errend_dat ASC, b.errend_zeit ASC";
$result = sqlsrv_query($conn, $query);
echo "<td>";
echo $row['aunr'];
echo "</td>";
例如'aunr'
.
除非您实际存储预格式化字符串(这似乎不太可能),否则就任何数据库而言,.5
和0.5
是相同的。如果希望强制在输出中出现前导零,可以使用printf()
的格式化特性:
printf("%0.1f", $row['aunr']);
请参阅printf文档了解格式化模板的含义。
解决这个问题的一个选择是在sqlsrv_query()
调用中使用适当的查询属性:
<php
...
$options = array("FormatDecimals" => true);
$result = sqlsrv_query($conn, $query, null, $options);
...
?>
函数sqlsrv_query
是SQL Server的PHP驱动程序的一部分,并支持可选的$options
参数来设置额外的查询属性。其中一个属性是FormatDecimals
(从驱动程序的5.6.0版本开始可用),它指定是否在适当的时候向十进制字符串添加前导零,并启用DecimalPlaces
选项来格式化货币类型。默认值为false
。
关于所有可能的参数及其默认值的信息在文档的sqlsrv_prepare部分。
工作的例子:
<?php
// Connection
$servername = "serverinstance";
$cinfo = array(
"UID" => 'username',
"PWD" => 'password',
"Database" => 'database'
);
$conn = sqlsrv_connect($servername, $cinfo);
if ($conn === false) {
die(print_r( sqlsrv_errors(), true));
}
// Statement
$query = "SELECT CONVERT(numeric(5,2), 0.5) AS [Number]";
$options = array("FormatDecimals" => true);
$stmt = sqlsrv_query($conn, $query, null, $options);
if ($stmt === false) {
echo "Error";
die(print_r(sqlsrv_errors(), true));
}
// Fetch data
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row["Number"]."<br>";
}
// End
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>