Server-Side Programming with Unicode

Aby bazę danych obsługujących Unicode obejmuje obsługujących Unicode interakcji klient, oprócz definiowania nchar, nvarchar, a nvarchar(max) typy danych, aby zdefiniować magazynowania Unicode. Interakcje klient korzystającego z Unicode można zdefiniować, wykonując następujące czynności po stronie serwera bazy danych:

  • Przełączyć się z danych nie obsługujących kodu Unicode typów na typy danych standardu Unicode w kolumnach tabela i CONVERT() i CAST() operacji.

  • Należy zastąpić za pomocą funkcji ASCII() i CHAR() z ich odpowiedniki standardu Unicode UNICODE() i NCHAR().

  • Definiowanie zmiennych i parametrów procedur przechowywanych i wyzwalaczy w standardzie Unicode.

  • Prefiks stałych ciąg znaków Unicode z literą N.

Za pomocą UNICODE() NCHAR() i inne funkcje

Funkcja ASCII() zwraca kod znaku innym niż Unicode znaku przekazany.W związku z tym Użyj odpowiednika UNICODE() funkcja ciągów znaków Unicode należy użyć funkcja ASCII na ciągi nie obsługujących kodu Unicode.To samo dotyczy funkcja CHAR, NCHAR jest jego odpowiednikiem Unicode.

Ponieważ funkcja SOUNDEX() jest definiowana w zależności od języka angielskiego fonetyczny reguły, to nie ma sensu na ciągi Unicode, chyba że ciąg zawiera wyłącznie łaciński znaki od A do Z i do z.

ASCII, typu CHAR i SOUNDEX mogą być przekazywane parametry Unicode, ale te argumenty są niejawnie konwertowane na ciągów nie obsługujących kodu Unicode.Może to spowodować, że ewentualnej utraty znaków Unicode, przed ich przetworzeniem, ponieważ funkcje te działają na ciągi nie obsługujących kodu Unicode z definicji.

Oprócz funkcji UNICODE() i NCHAR() następujące funkcje manipulacji ciąg obsługuje standardu Unicode, tam gdzie to możliwe: CHARINDEX(), LEFT(), LEN(), UPPER(), LOWER(), LTRIM(), RTRIM(), PATINDEX(), REPLACE(), QUOTENAME(), REPLICATE(), REVERSE(), STUFF(), SUBSTRING(), UNICODE(). Funkcje te zaakceptować argumenty Unicode, przestrzegać granice znak dwubajtowy ciągów znaków Unicode, a Unicode sortowanie reguł do porównywania ciągów, gdy parametry wejściowe są Unicode za pomocą.

Definiowanie parametrów w przechowywanych procedur

Definiowanie parametrów z Unicode, typ danych gwarancji żądań klientów lub dane wejściowe są niejawnie konwertowane na standard Unicode na serwerze i nie jest uszkodzony w procesie.Jeśli ten parametr jest określony jako parametru WYJŚCIOWEGO, typu Unicode minimalizuje także szansę uszkodzenia w drodze do klient.

W poniższej procedurze przechowywanej zmienna jest zadeklarowany jako typ danych Unicode.

CREATE PROCEDURE Product_Info
    @name nvarchar(40)
AS
SELECT p.ListPrice, v.Name
    FROM Production.Product p 
        INNER JOIN Purchasing.ProductVendor pv
            ON p.ProductID = pv.ProductID  
        INNER JOIN Purchasing.Vendor v
            ON pv.VendorID = v.VendorID
WHERE p.Name = @name;

Za pomocą prefiks N

Stałe ciąg Unicode, które pojawiają się w kod wykonywany na serwerze, takie jak procedury przechowywane i wyzwalacze, musi być poprzedzona odpowiadającą jej wielką literę.Dzieje się tak nawet wtedy, gdy kolumna, której dotyczy odwołanie, jest już zdefiniowany w standardzie Unicode.Bez prefiksu N ciąg jest konwertowany na domyślna strona kodowa bazy danych.To może nie rozpoznać niektórych znaków.

Na przykład procedura przechowywana, utworzony w poprzednim przykładzie mogą być wykonywane na serwerze, w następujący sposób:

EXECUTE Product_Info @name = N'Chain'

Wymóg używania N Prefiks dotyczy zarówno stałych ciąg znaków, które pochodzą na serwerze, jak i tych, które są wysyłane z klient.