Aracılığıyla paylaş


Uluslararası Transact-SQL Sorguları Yazma

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

Transact-SQL deyimlerini kullanan veritabanları ve veritabanı uygulamaları, aşağıdaki yönergelere uyulduğunda bir dilden diğerine daha fazla taşınabilir hale gelir veya birden çok dili destekler:

  • SQL Server 2019 (15.x) ile başlayarak ve Azure SQL Veritabanı'nda şunlardan birini kullanın:

    • UTF-8 etkin harmanlama özelliğine sahip char, varchar ve varchar(max) veri türleri UTF-8 kullanılarak kodlanır.
    • Nchar, nvarchar ve nvarchar(max) veri türleri, tamamlayıcı karakter (SC) etkinleştirilmiş harmanlama ile kullanılır ve veriler UTF-16 kullanılarak kodlanır. SC olmayan bir harmanlama kullanıldığında veriler UCS-2 kullanılarak kodlanır.

    Bu, kod sayfası dönüştürme sorunlarını önler. Diğer konular için bkz. UTF-8 ile UTF-16 arasındaki depolama farklılıkları.

  • SQL Server 2017'ye (14.x) kadar, char, varchar ve varchar(max) veri türlerinin tüm kullanımlarını nchar, nvarchar ve nvarchar(max)ile değiştirin. Tamamlayıcı karakter (SC) etkin harmanlama kullanılıyorsa veriler UTF-16 kullanılarak kodlanır. SC olmayan bir harmanlama kullanıldığında veriler UCS-2 kullanılarak kodlanır. Bu, kod sayfası dönüştürme sorunlarını önler. Daha fazla bilgi için bkz. Harmanlama ve Unicode Desteği.

    Önemli

    Metin veri türü kullanım dışıdır ve yeni geliştirme çalışmalarında kullanılmamalıdır. Metin verilerini varchar(max)'e dönüştürmeyi planlayın.

  • Ay ve haftanın günü karşılaştırmaları ve işlemleri yaparken, ad dizeleri yerine sayısal tarih bölümlerini kullanın. Farklı dil ayarları aylar ve hafta içi için farklı adlar döndürür. Örneğin, DATENAME(MONTH,GETDATE()) dil ABD İngilizcesi olarak ayarlandığında döndürür May , dil Almanca olarak ayarlandığında döndürür Mai ve dil Fransızca olarak ayarlandığında döndürür mai . Bunun yerine, ad yerine ay sayısını kullanan DATEPART gibi bir işlev kullanın. Tarih adları genellikle sayısal gösterimden daha anlamlı olduğundan, kullanıcıya görüntülenecek sonuç kümeleri oluştururken DATEPART adlarını kullanın. Ancak, görüntülenen adların belirli bir dilden olmasına bağlı herhangi bir mantığı kodlamayın.

  • Karşılaştırmalarda veya INSERT veya UPDATE deyimlerine giriş için tarihler belirttiğinizde, tüm dil ayarları için aynı şekilde yorumlanan sabitleri kullanın:

    • ADO, OLE DB ve ODBC uygulamaları, ODBC zaman damgası, tarih ve saat kaçış dizilerini kullanmalıdır.

      { ts'yyyy-mm-ddhh:mm:ss [.fff] '} örneğin: { ts'1998-09-24 10:02:20'}

      { d'yyyy-mm-dd'} örneğin: { d'1998-09-24'}

      { t'hh:mm:ss'} örneğin: { t'10:02:20'}

    • Diğer API'leri veya Transact-SQL betikleri, saklı yordamları ve tetikleyicileri kullanan uygulamalar ayrılmamış sayısal dizeleri kullanmalıdır. Örneğin, yyyymmdd olarak 19980924.

    • Diğer API'leri veya Transact-SQL betikleri, saklı yordamları ve tetikleyicileri kullanan uygulamalar, CONVERT deyimini time, date, smalldate, datetime, datetime2 ve datetimeoffset veri türleri ile karakter dizesi veri türleri arasındaki tüm dönüştürmeler için açık bir stil parametresiyle kullanmalıdır. Örneğin, aşağıdaki deyim tüm dil veya tarih biçimi bağlantı ayarları için aynı şekilde yorumlanır:

      SELECT *  
      FROM AdventureWorks2022.Sales.SalesOrderHeader  
      WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)  
      

Ayrıca bakınız

CAST ve CONVERT (Transact-SQL)
DATEPART (Transact-SQL)
Harmanlama ve Unicode Desteği