【问题标题】:the zero in front of the comma is not displayed [closed]逗号前面的零不显示[关闭]
【发布时间】:2021-02-24 15:44:09
【问题描述】:

我有一个 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'

【问题讨论】:

  • 这里的问题不是很清楚。您是说0.5 显示为.5 还是相反(标题会建议第一个选项,但问题本身让我感到困惑)?价值如何存储?

标签: php sql-server sqlsrv


【解决方案1】:

除非您实际上存储的是预格式化字符串(这似乎不太可能),否则就任何数据库而言,.50.5 都是相同的。如果你想强制前导零出现在你的输出中,你可以使用printf()的格式化功能:

printf("%0.1f", $row['aunr']);

请参阅printf docs 了解格式化模板的含义。

【讨论】:

    【解决方案2】:

    解决此问题的一种方法是在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 = "server\instance";
    $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);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 1970-01-01
      • 2019-07-23
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      相关资源
      最近更新 更多