Aracılığıyla paylaş


Ondalık Dizeleri ve Para Değerlerini Biçimlendirme (SQLSRV Sürücüsü)

PHP sürücüsünü indirme

Doğruluğu korumak için ondalık veya sayısal türler her zaman tam duyarlıklara ve ölçeklere sahip dizeler olarak getirilir. Herhangi bir değer 1'den küçükse, baştaki sıfır eksiktir. Sabit ölçek 4'e eşit ondalık alanlar olduğu için para ve küçük para alanlarıyla aynıdır.

Eksikse baştaki sıfırları ekleyin

Sürüm 5.6.0'den başlayarak, seçenek FormatDecimals sqlsrv bağlantısına ve deyim düzeylerine eklenir ve bu seçenek kullanıcının ondalık dizeleri biçimlendirmesine olanak tanır. Bu ayar, boolean bir değeri (true veya false) bekler ve yalnızca elde edilen sonuçlardaki ondalık veya sayısal değerlerin biçimlendirmesini etkiler. Başka bir deyişle, bu seçeneğin FormatDecimals ekleme veya güncelleştirme gibi diğer işlemler üzerinde hiçbir etkisi yoktur.

Varsayılan olarak FormatDecimalsfalse değeridir. True olarak ayarlanırsa, 1'den küçük herhangi bir ondalık değer için ondalık dizelere baştaki sıfırlar eklenir.

Ondalık basamak sayısını yapılandırma

FormatDecimals açık durumdayken, başka bir seçenek DecimalPlaces, kullanıcıların para ve küçük para tipi verilerini görüntülerken ondalık basamak sayısını yapılandırmasına olanak tanır. [0, 4] aralığındaki tamsayı değerlerini kabul eder ve gösterildiğinde yuvarlama oluşabilir. Ancak, temel alınan para verileri aynı kalır.

Her iki seçenek de bağlantı veya deyim düzeyine ayarlanabilir ve deyim ayarı her zaman ilgili bağlantı ayarını geçersiz kılar. Bu seçeneğin DecimalPlacesyalnızca para verilerini etkilediğini ve FormatDecimals etkili olması için DecimalPlaces true olarak ayarlanması gerektiğini unutmayın. Aksi takdirde, DecimalPlaces ayarından bağımsız olarak biçimlendirme kapatılır.

Uyarı

Para veya küçük para alanları 4 basamağa sahip olduğundan, DecimalPlaces değerini negatif bir sayıya veya 4'ten büyük bir değere ayarlamak yoksayılacaktır. Biçimlendirilmiş para verilerinin herhangi bir hesaplamaya giriş olarak kullanılması önerilmez.

Örnek - basit bir getirme

Aşağıdaki örnekte, basit bir getirme işleminde yeni seçeneklerin nasıl kullanılacağı gösterilmektedir.

<?php
$username = 'myusername';
$password = '<password>';
$tableName = 'mytable';

$connectionInfo = array("UID" => $username, "PWD" => $password, "Database" => "myDB", "FormatDecimals" => true);  
$server = "myServer";  // IP address also works
$conn = sqlsrv_connect( $server, $connectionInfo);  

$numDigits = 2;
$query = "SELECT money1 FROM $tableName";
$options = array("DecimalPlaces" => $numDigits);
$stmt = sqlsrv_prepare($conn, $query, array(), $options);
sqlsrv_execute($stmt);

if (sqlsrv_fetch($stmt)) {
    $field = sqlsrv_get_field($stmt, 0);  
    echo $field;   // expect a numeric value string with 2 decimal places
}

sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

Örnek - çıkış parametresini biçimlendirme

Çıkış parametresi olarak ondalık veya sayısal alan döndürülürse, döndürülen değer normal bir varchar dizesi olarak kabul edilir. Ancak, SQLSRV_SQLTYPE_DECIMAL veya SQLSRV_SQLTYPE_NUMERIC belirtilirse, sayısal dize değeri için eksik başta sıfır olmadığından emin olmak için true olarak ayarlayabilirsiniz FormatDecimals . Daha fazla bilgi için bkz . Nasıl yapılır: SQLSRV Sürücüsünü Kullanarak Çıkış Parametrelerini Alma.

Aşağıdaki örnekte, ondalık (8,4) değeri döndüren saklı yordamın çıkış parametresinin nasıl biçimlendirileceği gösterilmektedir.

$outString = '';
$outSql = '{CALL myStoredProc(?)}';
$stmt = sqlsrv_prepare($conn, 
                       $outSql, 
                       array(array(&$outString, SQLSRV_PARAM_OUT, null, SQLSRV_SQLTYPE_DECIMAL(8, 4))),
                       array('FormatDecimals' => true));

if (sqlsrv_execute($stmt)) {
    echo $outString;  // expect a numeric value string with no missing leading zero
}

Ayrıca Bkz.

Ondalık Dizeleri ve Para Değerlerini Biçimlendirme (PDO_SQLSRV Sürücüsü)

Veri Alınıyor