Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
System Platform Analitycznych (PDW)
Baza danych SQL w Microsoft Fabric
Bazy danych i aplikacje bazy danych korzystające z instrukcji Transact-SQL staną się bardziej przenośne z jednego języka do innego lub będą obsługiwać wiele języków, jeśli zostaną spełnione następujące wskazówki:
Począwszy od programu SQL Server 2019 (15.x) i usługi Azure SQL Database, użyj jednego z następujących elementów:
- Typy danych char, varchar i varchar(max) z włączonym zestawieniem znaków UTF-8, a dane są kodowane przy użyciu UTF-8.
- Typy danych nchar, nvarchar i nvarchar(max) z sortowaniem obsługującym dodatkowe znaki (SC), a dane są kodowane przy użyciu formatu UTF-16. Użycie sortowania innego niż SC powoduje kodowanie danych przy użyciu protokołu UCS-2.
Pozwala to uniknąć problemów z konwersją strony kodowej. Aby zapoznać się z innymi zagadnieniami, zobacz Różnice w przechowywaniu między UTF-8 i UTF-16.
Do wersji SQL Server 2017 (14.x) zastąp wszystkie zastosowania typów danych char, varchar i varchar(max) typami nchar, nvarchar oraz nvarchar(max). W przypadku używania sortowania z włączonym znakiem dodatkowym (SC) dane są kodowane przy użyciu formatu UTF-16. Użycie sortowania innego niż SC powoduje kodowanie danych przy użyciu protokołu UCS-2. Pozwala to uniknąć problemów z konwersją strony kodowej. Aby uzyskać więcej informacji, zobacz Sortowanie i obsługa Unicode.
Ważne
Typ danych tekstowych jest przestarzały i nie powinien być używany w nowych pracach programistycznych. Zaplanuj konwertowanie danych tekstowych na varchar(max).
Podczas wykonywania porównań i operacji dotyczących miesięcy i dni tygodnia, używaj liczbowych części daty zamiast ciągów nazw. Różne ustawienia języka zwracają różne nazwy miesięcy i dni tygodnia. Na przykład
DATENAME(MONTH,GETDATE())zwraca wartośćMay, gdy język jest ustawiony na angielski w USA, zwracaMaiwartość , gdy język jest ustawiony na niemiecki i zwracamaiwartość , gdy język jest ustawiony na francuski. Zamiast tego należy użyć funkcji, takiej jak DATEPART , która używa liczby miesięcy zamiast nazwy. Użyj nazw DATEPART podczas tworzenia zestawów wyników, które mają być wyświetlane użytkownikowi, ponieważ nazwy dat są często bardziej znaczące niż reprezentacja liczbowa. Nie koduj jednak żadnej logiki, która zależy od wyświetlanych nazw z określonego języka.Po określeniu dat w porównaniach lub dla danych wejściowych instrukcji INSERT lub UPDATE użyj stałych, które są interpretowane w taki sam sposób dla wszystkich ustawień języka:
Aplikacje ADO, OLE DB i ODBC powinny używać klauzul ucieczki ODBC dla sygnatury czasowej, daty i godziny.
{ ts'rrrr-mm-ddhh:mm:ss [.fff] '} na przykład: { ts'1998-09-24 10:02:20'}
{ d'rrrr-mm-dd'} na przykład: { d'1998-09-24'}
{ t'hh:mm:ss'} na przykład: { t'10:02:20'}
Aplikacje korzystające z innych interfejsów API lub skryptów Transact-SQL, procedur składowanych i wyzwalaczy powinny używać niesepatycznych ciągów liczbowych. Na przykład yyyymmddd jako 19980924.
Aplikacje korzystające z innych interfejsów API lub skryptów Transact-SQL, procedur składowanych i wyzwalaczy powinny używać instrukcji CONVERT z jawnym parametrem stylu dla wszystkich konwersji pomiędzy typami danych time, date, smalldate, datetime, datetime2 i datetimeoffset a typami danych ciągu znaków. Na przykład następująca instrukcja jest interpretowana w taki sam sposób dla wszystkich ustawień języka lub formatu daty połączenia:
SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Zobacz także
RZUTOWANIE i konwertowanie (Transact-SQL)
DATEPART (Transact-SQL)
Obsługa sortowania i Unicode