Aracılığıyla paylaş


BIÇIM (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft FabricAmbarı'nda Azure Synapse AnalyticsSQL analytics uç noktası

Belirtilen biçim ve isteğe bağlı kültürle biçimlendirilmiş bir değer döndürür. Tarih/saat ve sayı değerlerini dize olarak yerel ayar kullanan biçimlendirme için FORMAT işlevini kullanın. Genel veri türü dönüştürmeleri için CAST veya CONVERTkullanın.

Transact-SQL söz dizimi kuralları

Sözdizimi

FORMAT( value , format [ , culture ] )

Bağımsız değişken

değer

Biçimlendirecek desteklenen bir veri türünün ifadesi. Geçerli türlerin listesi için Açıklamalar bölümündeki tabloya bakın.

biçim

nvarchar biçim deseni .

biçim bağımsız değişkeni, standart biçim dizesi (örneğin, "C" veya "D") ya da tarihler ve sayısal değerler için özel karakter deseni olarak (örneğin, "MMMM DD, yyyy (dddd)") geçerli bir .NET Framework biçim dizesi içermelidir. Bileşik biçimlendirme desteklenmez.

Bu biçimlendirme desenlerinin tam açıklaması için, genel olarak dize biçimlendirmesi, özel tarih ve saat biçimleri ve özel sayı biçimleriyle ilgili .NET Framework belgelerine bakın. Daha fazla bilgi için bkz. Biçimlendirme Türleri.

kültür

İsteğe bağlı nvarchar bir kültür belirten bağımsız değişken.

kültür bağımsız değişkeni sağlanmazsa geçerli oturumun dili kullanılır. Bu dil örtük olarak veya açıkça SET LANGUAGE deyimi kullanılarak ayarlanır. kültür bağımsız değişken olarak .NET Framework tarafından desteklenen herhangi bir kültürü kabul eder; SQL Server tarafından açıkça desteklenen dillerle sınırlı değildir. kültür bağımsız değişkeni geçerli değilse FORMAT bir hata oluşturur.

Dönüş türleri

nvarchar veya null

Dönüş değerinin uzunluğu,biçimi tarafından belirlenir.

Açıklamalar

, geçerliolmayan kültür dışındaki hatalar için döndürür. Örneğin, NULL geçerli değilse döndürülür.

FORMAT işlevi belirsizdir.

FORMAT, .NET Framework Ortak Dil Çalışma Zamanı'nın (CLR) varlığına dayanır.

CLR'nin varlığına bağlı olduğundan bu işlev uzaktan kullanılamaz. CLR gerektiren bir işleve uzaktan erişim, uzak sunucuda bir hataya neden olabilir.

FORMAT, iki nokta üst üste ve noktalardan kaçılması gerektiğini belirten CLR biçimlendirme kurallarına dayanır. Bu nedenle, biçim dizesi (ikinci parametre) iki nokta veya iki nokta içerdiğinde, bir giriş değeri (ilk parametre) veri türü olduğunda iki nokta veya nokta ters eğik çizgiyle kaçılmalıdır. Bkz.zaman veri türleriyle D. FORMAT.

Aşağıdaki tabloda, .NET Framework eşleme eşdeğer türleriyle birlikte değeri bağımsız değişkeni için kabul edilebilir veri türleri listelenmektedir.

Kategori Tür .NET türü
Sayısal büyük Int64
Sayısal Int Int32
Sayısal smallint Int16
Sayısal tinyint Byte
Sayısal ondalık SqlDecimal
Sayısal Sayısal SqlDecimal
Sayısal yüzmek Double
Sayısal Gerçek Single
Sayısal küçük para Decimal
Sayısal para Decimal
Tarih ve Saat tarih DateTime
Tarih ve Saat saat TimeSpan
Tarih ve Saat datetime DateTime
Tarih ve Saat smalldatetime DateTime
Tarih ve Saat datetime2 DateTime
Tarih ve Saat datetimeoffset DateTimeOffset

Örnekler

A. Basit FORMAT örneği

Aşağıdaki örnek, farklı kültürler için biçimlendirilmiş basit bir tarih döndürür.

DECLARE @d AS DATE = '08/09/2024';

SELECT FORMAT(@d, 'd', 'en-US') AS 'US English',
       FORMAT(@d, 'd', 'en-gb') AS 'British English',
       FORMAT(@d, 'd', 'de-de') AS 'German',
       FORMAT(@d, 'd', 'zh-cn') AS 'Chinese Simplified (PRC)';

SELECT FORMAT(@d, 'D', 'en-US') AS 'US English',
       FORMAT(@d, 'D', 'en-gb') AS 'British English',
       FORMAT(@d, 'D', 'de-de') AS 'German',
       FORMAT(@d, 'D', 'zh-cn') AS 'Chinese Simplified (PRC)';

Sonuç kümesi aşağıdadır.

US English   British English  German      Simplified Chinese (PRC)
-----------  ---------------- ----------- -------------------------
8/9/2024     09/08/2024       09.08.2024  2024/8/9

US English              British English  German                    Chinese (Simplified PRC)
----------------------- ---------------- ------------------------  -------------------------
Friday, August 9, 2024  09 August 2024   Freitag, 9. August 2024   2024年8月9日

B. Özel biçimlendirme dizeleriyle FORMAT

Aşağıdaki örnekte, özel bir biçim belirterek sayısal değerlerin biçimlendirilmesi gösterilmektedir. Örnekte geçerli tarihin 9 Ağustos 2024 olduğu varsayılır. Bu biçimler ve diğer özel biçimler hakkında daha fazla bilgi için bkz. Özel Sayısal Biçim Dizeleri.

DECLARE @d AS DATE = GETDATE();

SELECT FORMAT(@d, 'dd/MM/yyyy', 'en-US') AS 'Date',
       FORMAT(123456789, '###-##-####') AS 'Custom Number';

Sonuç kümesi aşağıdadır.

Date         Custom Number
-----------  --------------
09/08/2024   123-45-6789

C. Sayısal türlerle FORMAT

Aşağıdaki örnek, Sales.CurrencyRate veritabanındaki AdventureWorks2022 tablosundan beş satır döndürür. Sütun , tabloda para tür olarak depolanır. Bu örnekte sütun biçimlendirilmemiş olarak döndürülür ve .NET Sayı biçimi, Genel biçimi ve Para Birimi biçim türleri belirtilerek biçimlendirilir. Bu ve diğer sayısal biçimler hakkında daha fazla bilgi için bkz.Standart Sayısal Biçim Dizeleri .

SELECT TOP (5) CurrencyRateID,
               EndOfDayRate,
               FORMAT(EndOfDayRate, 'N', 'en-us') AS 'Numeric Format',
               FORMAT(EndOfDayRate, 'G', 'en-us') AS 'General Format',
               FORMAT(EndOfDayRate, 'C', 'en-us') AS 'Currency Format'
FROM Sales.CurrencyRate
ORDER BY CurrencyRateID;

Sonuç kümesi aşağıdadır.

CurrencyRateID EndOfDayRate  Numeric Format  General Format  Currency Format
-------------- ------------  --------------  --------------  ---------------
1              1.0002        1.00            1.0002          $1.00
2              1.55          1.55            1.5500          $1.55
3              1.9419        1.94            1.9419          $1.94
4              1.4683        1.47            1.4683          $1.47
5              8.2784        8.28            8.2784          $8.28

Bu örnek, Almanca kültürünü (de-de) belirtir.

SELECT TOP (5) CurrencyRateID,
               EndOfDayRate,
               FORMAT(EndOfDayRate, 'N', 'de-de') AS 'Numeric Format',
               FORMAT(EndOfDayRate, 'G', 'de-de') AS 'General Format',
               FORMAT(EndOfDayRate, 'C', 'de-de') AS 'Currency Format'
FROM Sales.CurrencyRate
ORDER BY CurrencyRateID;
CurrencyRateID EndOfDayRate  Numeric Format  General Format  Currency Format
-------------- ------------  --------------  --------------  ---------------
1              1.0002        1,00            1,0002          1,00 €
2              1.55          1,55            1,5500          1,55 €
3              1.9419        1,94            1,9419          1,94 €
4              1.4683        1,47            1,4683          1,47 €
5              8.2784        8,28            8,2784          8,28 €

D. Zaman veri türleriyle FORMAT

FORMAT ve NULL kaçışı olmadığından . bu durumlarda : döndürür.

SELECT FORMAT(CAST('07:35' AS TIME), N'hh.mm'); --> returns NULL
SELECT FORMAT(CAST('07:35' AS TIME), N'hh:mm'); --> returns NULL

biçim, . ve : kaçtığı için biçimlendirilmiş bir dize döndürür.

SELECT FORMAT(CAST('07:35' AS TIME), N'hh\.mm'); --> returns 07.35
SELECT FORMAT(CAST('07:35' AS TIME), N'hh\:mm'); --> returns 07:35

Biçim, veya PM belirtilen biçimlendirilmiş bir geçerli saat döndürür.

SELECT FORMAT(SYSDATETIME(), N'hh:mm tt'); --> returns 03:46 PM
SELECT FORMAT(SYSDATETIME(), N'hh:mm t');  --> returns 03:46 P

Biçim belirtilen saati döndürerek değerini görüntüler.

SELECT FORMAT(CAST('2018-01-01 01:00' AS DATETIME2), N'hh:mm tt'); --> returns 01:00 AM
SELECT FORMAT(CAST('2018-01-01 01:00' AS DATETIME2), N'hh:mm t');  --> returns 01:00 A

Biçim, belirtilen saati döndürür ve PM'yi görüntüler.

SELECT FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'hh:mm tt'); --> returns 02:00 PM
SELECT FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'hh:mm t');  --> returns 02:00 P

Biçim, belirtilen saati 24 saatlik biçimde döndürür.

SELECT FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'HH:mm'); --> returns 14:00

E. Büyük sayılar için virgül ayırıcıları ile biçimlendirme

Aşağıdaki örnekte, büyük sayıların virgül ayırıcılarla nasıl biçimlendirilir gösterilmektedir.

SELECT FORMAT(1234567.89, 'N0') AS FormattedNumber;

Sonuç kümesi aşağıdadır.

1,234,568

Bu örnekte N biçim tanımlayıcısı kullanılır. N tanımlayıcısı sayısal değerler için kullanılır ve biçim dizesi değiştirilerek ondalık basamak sayısı ayarlanabilir (örneğin, iki ondalık basamak için N2).

FORMAT ( value, format_string [, culture ] )

Parametre

  • value: Biçimlendirecek değer.
  • format_string: Uygulanacak biçimi belirten bir dize.
  • culture: (İsteğe bağlı) Biçimlendirme için kullanılacak kültürü belirten bir dize.
SELECT FORMAT(1234567.89, 'N0') AS FormattedNumber;
1,234,568