Microsoft SQL Server
Funkcje ciągów
Szukaj…
Uwagi
Lista funkcji łańcuchowych (posortowane alfabetycznie):
Lewo
Zwraca łańcuch podrzędny rozpoczynający się od najbardziej lewego znaku łańcucha i aż do określonej maksymalnej długości.
Parametry:
- wyrażenie postaci. Wyrażenie znakowe może być dowolnego typu danych, który można domyślnie przekonwertować na
varchar
lubnvarchar
, z wyjątkiemtext
lubntext
- maksymalna długość. Liczba całkowita z zakresu od 0 do wartości
bigint
(9,223,372,036,854,775,807).
Jeśli parametr maksymalnej długości jest ujemny, pojawi się błąd.
SELECT LEFT('This is my string', 4) -- result: 'This'
Jeśli maksymalna długość jest większa niż liczba znaków w ciągu, zwracany jest ciąg entera.
SELECT LEFT('This is my string', 50) -- result: 'This is my string'
Dobrze
Zwraca podłańcuch, który jest najbardziej prawą częścią łańcucha o określonej maksymalnej długości.
Parametry:
- wyrażenie postaci. Wyrażenie znakowe może być dowolnego typu danych, który można domyślnie przekonwertować na
varchar
lubnvarchar
, z wyjątkiemtext
lubntext
- maksymalna długość. Liczba całkowita z zakresu od 0 do wartości
bigint
(9,223,372,036,854,775,807). Jeśli parametr maksymalnej długości jest ujemny, pojawi się błąd.
SELECT RIGHT('This is my string', 6) -- returns 'string'
Jeśli maksymalna długość jest większa niż liczba znaków w ciągu, zwracany jest ciąg entera.
SELECT RIGHT('This is my string', 50) -- returns 'This is my string'
Podciąg
Zwraca podciąg rozpoczynający się od znaku znajdującego się w określonym indeksie początkowym i określonej maksymalnej długości.
Parametry:
- Wyrażenie postaci. Wyrażenie znakowe może być dowolnego typu danych, który można domyślnie przekonwertować na
varchar
lubnvarchar
, z wyjątkiemtext
lubntext
. - Rozpocznij indeks. Liczba (
int
lubbigint
) określająca indeks początkowy żądanego podłańcucha. ( Uwaga: ciągi na serwerze SQL są indeksem podstawowym 1, co oznacza, że pierwszym znakiem łańcucha jest indeks 1). Liczba ta może być mniejsza niż 1. W tym przypadku, jeśli suma indeksu początkowego i maksymalnej długości jest większa niż 0, zwracany ciąg będzie ciągiem rozpoczynającym się od pierwszego znaku wyrażenia znakowego i długością (indeks początkowy + maksymalna długość - 1). Jeśli jest mniejsza niż 0, zwrócony zostanie pusty ciąg. - Maksymalna długość. Liczba całkowita z zakresu od 0 do wartości
bigint
(9,223,372,036,854,775,807). Jeśli parametr maksymalnej długości jest ujemny, pojawi się błąd.
SELECT SUBSTRING('This is my string', 6, 5) -- returns 'is my'
Jeśli maksymalna długość + indeks początkowy jest większy niż liczba znaków w ciągu, zwracany jest ciąg entier.
SELECT SUBSTRING('Hello World',1,100) -- returns 'Hello World'
Jeśli indeks początkowy jest większy niż liczba znaków w ciągu, zwracany jest pusty ciąg.
SELECT SUBSTRING('Hello World',15,10) -- returns ''
ASCII
Zwraca wartość int reprezentującą kod ASCII skrajnie lewego znaku.
SELECT ASCII('t') -- Returns 116
SELECT ASCII('T') -- Returns 84
SELECT ASCII('This') -- Returns 84
Jeśli ciąg znaków to Unicode, a skrajnie lewy znak nie jest ASCII, ale jest reprezentowalny w bieżącym sortowaniu, można zwrócić wartość większą niż 127:
SELECT ASCII(N'ï') -- returns 239 when `SERVERPROPERTY('COLLATION') = 'SQL_Latin1_General_CP1_CI_AS'`
Jeśli ciąg znaków jest Unicode, a lewy znak nie może być reprezentowany w bieżącym sortowaniu, zwracana jest wartość int 63: (która reprezentuje znak zapytania w ASCII):
SELECT ASCII(N'߷') -- returns 63
SELECT ASCII(nchar(2039)) -- returns 63
CharIndex
Zwraca indeks początkowy pierwszego wystąpienia wyrażenia łańcuchowego w innym wyrażeniu łańcuchowym.
Lista parametrów:
- Ciąg do znalezienia (do 8000 znaków)
- Ciąg do przeszukiwania (dowolny prawidłowy typ danych i długość znaków, w tym binarny)
- (Opcjonalnie) indeks, aby rozpocząć. Liczba typów int lub big int. Jeśli pominięto lub mniej niż 1, wyszukiwanie rozpoczyna się na początku ciągu.
Jeśli szukany ciąg to varchar(max)
, nvarchar(max)
lub varbinary(max)
, funkcja CHARINDEX
zwróci wartość bigint
. W przeciwnym razie zwróci wartość int
.
SELECT CHARINDEX('is', 'this is my string') -- returns 3
SELECT CHARINDEX('is', 'this is my string', 4) -- returns 6
SELECT CHARINDEX(' is', 'this is my string') -- returns 5
Zwęglać
Zwraca znak reprezentowany przez int kod ASCII.
SELECT CHAR(116) -- Returns 't'
SELECT CHAR(84) -- Returns 'T'
Można tego użyć do wprowadzenia nowego wiersza / wiersza wiersza CHAR(10)
, znaku powrotu karetki CHAR(13)
itp. Patrz: AsciiTable.com w celach informacyjnych.
Jeśli wartość argumentu nie mieści się w przedziale od 0 do 255, funkcja CHAR zwraca NULL
.
Zwracanym typem danych funkcji CHAR
jest char(1)
Len
Zwraca liczbę znaków ciągu.
Uwaga: funkcja LEN
ignoruje końcowe spacje:
SELECT LEN('My string'), -- returns 9
LEN('My string '), -- returns 9
LEN(' My string') -- returns 12
Jeśli pożądana jest długość, w tym spacje końcowe, istnieje kilka technik, aby to osiągnąć, chociaż każda ma swoje wady. Jedną z technik jest dodanie pojedynczego znaku do ciągu, a następnie użycie LEN
minus jeden:
DECLARE @str varchar(100) = 'My string '
SELECT LEN(@str + 'x') - 1 -- returns 12
Wadą tego jest to, że typ zmiennej łańcuchowej lub kolumny ma maksymalną długość, dodatek dodatkowego znaku jest odrzucany, a wynikowa długość nadal nie będzie liczyć końcowych spacji. Aby rozwiązać ten problem, następująca zmodyfikowana wersja rozwiązuje problem i zapewnia prawidłowe wyniki we wszystkich przypadkach kosztem dodatkowego czasu wykonania i z tego powodu (prawidłowe wyniki, w tym z parami zastępczymi i rozsądną szybkością wykonywania) wydaje się być najlepszą techniką do zastosowania:
SELECT LEN(CONVERT(NVARCHAR(MAX), @str) + 'x') - 1
Inną techniką jest użycie funkcji DATALENGTH
.
DECLARE @str varchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 12
Należy jednak zauważyć, że DATALENGTH
zwraca długość w bajtach ciągu w pamięci. Będzie inaczej dla varchar
vs. nvarchar
.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 24
Możesz to zmienić, dzieląc długość ciągu znaków przez długość jednego znaku (który musi być tego samego typu). Poniższy przykład to robi, a także obsługuje przypadek, w którym ciąg docelowy jest pusty, unikając w ten sposób podziału przez zero.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) / DATALENGTH(LEFT(LEFT(@str, 1) + 'x', 1)) -- returns 12
Nawet to jednak ma problem w SQL Server 2012 i nowszych wersjach. Daje niepoprawne wyniki, gdy łańcuch zawiera pary zastępcze (niektóre znaki mogą zajmować więcej bajtów niż inne znaki w tym samym łańcuchu).
Inną techniką jest użycie REPLACE
do konwersji spacji na postać niebędącą spacją i pobranie LEN
wyniku. Daje to poprawne wyniki we wszystkich przypadkach, ale ma bardzo niską prędkość wykonania z długimi łańcuchami.
Concat
Zwraca ciąg będący wynikiem dwóch lub więcej ciągów połączonych ze sobą. CONCAT
akceptuje dwa lub więcej argumentów.
SELECT CONCAT('This', ' is', ' my', ' string') -- returns 'This is my string'
Uwaga: W przeciwieństwie do konkatenacji łańcuchów za pomocą operatora konkatenacji łańcuchów ( +
), przekazując wartość zerową do funkcji concat
, domyślnie przekształci ją w pusty łańcuch:
SELECT CONCAT('This', NULL, ' is', ' my', ' string'), -- returns 'This is my string'
'This' + NULL + ' is' + ' my' + ' string' -- returns NULL.
Również argumenty typu nie łańcuchowego zostaną domyślnie przekonwertowane na ciąg znaków:
SELECT CONCAT('This', ' is my ', 3, 'rd string') -- returns 'This is my 3rd string'
Zmienne typu nieciągłego zostaną również przekonwertowane na format ciągów, nie trzeba ręcznie ukrywać ani rzutować na ciąg znaków:
DECLARE @Age INT=23;
SELECT CONCAT('Ram is ', @Age,' years old'); -- returns 'Ram is 23 years old'
Starsze wersje nie obsługują funkcji CONCAT
i zamiast tego muszą używać operatora konkatenacji ciągu ( +
). Typy nieciągłe muszą być rzutowane lub konwertowane na typy ciągów, aby połączyć je w ten sposób.
SELECT 'This is the number ' + CAST(42 AS VARCHAR(5)) --returns 'This is the number 42'
Niższy
Zwraca wyrażenie znakowe ( varchar
lub nvarchar
) po konwersji wszystkich wielkich liter na małe litery.
Parametry:
- Wyrażenie postaci. Każde wyrażenie danych znakowych lub binarnych, które można niejawnie przekonwertować na
varchar
.
SELECT LOWER('This IS my STRING') -- Returns 'this is my string'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT LOWER(@String) -- Returns 'this is my string'
Górny
Zwraca wyrażenie znakowe ( varchar
lub nvarchar
) po konwersji wszystkich małych liter na wielkie.
Parametry:
- Wyrażenie postaci. Każde wyrażenie danych znakowych lub binarnych, które można niejawnie przekonwertować na
varchar
.
SELECT UPPER('This IS my STRING') -- Returns 'THIS IS MY STRING'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT UPPER(@String) -- Returns 'THIS IS MY STRING'
LTrim
Zwraca wyrażenie znakowe ( varchar
lub nvarchar
) po usunięciu wszystkich wiodących białych znaków, tj. Białych znaków od lewej do pierwszego znaku niebiałego.
Parametry:
- wyrażenie postaci. Dowolne wyrażenie danych znakowych lub binarnych, które można domyślnie przekonwertować na
varcher
, z wyjątkiemtext
,ntext
iimage
.
SELECT LTRIM(' This is my string') -- Returns 'This is my string'
RTrim
Zwraca wyrażenie znakowe ( varchar
lub nvarchar
) po usunięciu wszystkich końcowych białych spacji, tj. Spacji od prawego końca łańcucha do pierwszego znaku niebiałego spacji po lewej stronie.
Parametry:
- wyrażenie postaci. Dowolne wyrażenie danych znakowych lub binarnych, które można domyślnie przekonwertować na
varcher
, z wyjątkiemtext
,ntext
iimage
.
SELECT RTRIM('This is my string ') -- Returns 'This is my string'
Unicode
Zwraca wartość całkowitą reprezentującą wartość Unicode pierwszego znaku wyrażenia wejściowego.
Parametry:
- Wyrażenie znaku Unicode. Dowolne prawidłowe wyrażenie
nchar
lubnvarchar
.
SELECT UNICODE(N'Ɛ') -- Returns 400
DECLARE @Unicode nvarchar(11) = N'Ɛ is a char'
SELECT UNICODE(@Unicode) -- Returns 400
NChar
Zwraca znaki Unicode ( nchar(1)
lub nvarchar(2)
) odpowiadające otrzymanemu argumentowi liczby całkowitej zdefiniowanemu przez standard Unicode.
Parametry:
- wyrażenie całkowite. Każde wyrażenie całkowite, które jest liczbą dodatnią od 0 do 65535 lub jeśli sortowanie w bazie danych obsługuje flagę znaku uzupełniającego (CS), obsługiwany zakres wynosi od 0 do 1114111. Jeśli wyrażenie liczby całkowitej nie mieści się w tym zakresie,
null
wynosi zwrócony.
SELECT NCHAR(257) -- Returns 'ā'
SELECT NCHAR(400) -- Returns 'Ɛ'
Rewers
Zwraca wartość ciągu w odwrotnej kolejności.
Parametry:
- wyrażenie ciągu. Dowolny ciąg lub dane binarne, które można domyślnie przekonwertować na
varchar
.
Select REVERSE('Sql Server') -- Returns 'revreS lqS'
PatIndex
Zwraca pozycję początkową pierwszego wystąpienia określonego wzorca w określonym wyrażeniu.
Parametry:
wzór. Wyrażenie znakowe zawiera sekwencję do znalezienia. Ograniczona do maksymalnej długości 8000 znaków. We wzorze można używać symboli wieloznacznych (
%
,_
). Jeśli wzorzec nie zaczyna się od znaku wieloznacznego, może pasować tylko do tego, co jest na początku wyrażenia. Jeśli nie kończy się znakiem wieloznacznym, może pasować tylko do tego, co znajduje się na końcu wyrażenia.wyrażenie. Dowolny typ danych ciągu.
SELECT PATINDEX('%ter%', 'interesting') -- Returns 3.
SELECT PATINDEX('%t_r%t%', 'interesting') -- Returns 3.
SELECT PATINDEX('ter%', 'interesting') -- Returns 0, since 'ter' is not at the start.
SELECT PATINDEX('inter%', 'interesting') -- Returns 1.
SELECT PATINDEX('%ing', 'interesting') -- Returns 9.
Przestrzeń
Zwraca ciąg ( varchar
) powtarzających się spacji.
Parametry:
- wyrażenie całkowite. Dowolne wyrażenie całkowite, do 8000. Jeśli jest ujemne, zwracane jest
null
. jeśli 0, zwracany jest pusty ciąg. (Aby zwrócić ciąg dłuższy niż 8000 spacji, użyj opcji Replikuj.
SELECT SPACE(-1) -- Returns NULL
SELECT SPACE(0) -- Returns an empty string
SELECT SPACE(3) -- Returns ' ' (a string containing 3 spaces)
Replika
Powtarza wartość ciągu określoną liczbę razy.
Parametry:
- wyrażenie ciągu. Wyrażenie ciągu może być ciągiem znaków lub danymi binarnymi.
- wyrażenie całkowite. Dowolny typ liczb całkowitych, w tym
bigint
. Jeśli ujemna, zwracana jestnull
. Jeśli 0, zwracany jest pusty ciąg.
SELECT REPLICATE('a', -1) -- Returns NULL
SELECT REPLICATE('a', 0) -- Returns ''
SELECT REPLICATE('a', 5) -- Returns 'aaaaa'
SELECT REPLICATE('Abc', 3) -- Returns 'AbcAbcAbc'
Uwaga: Jeśli wyrażenie ciągu nie jest typu varchar(max)
lub nvarchar(max)
, zwracana wartość nie przekroczy 8000 znaków. Replikacja zatrzyma się przed dodaniem ciągu, który spowoduje, że wartość zwracana przekroczy ten limit:
SELECT LEN(REPLICATE('a b c d e f g h i j k l', 350)) -- Returns 7981
SELECT LEN(REPLICATE(cast('a b c d e f g h i j k l' as varchar(max)), 350)) -- Returns 8050
Zastąpić
Zwraca ciąg ( varchar
lub nvarchar
), w którym wszystkie wystąpienia określonego ciągu podrzędnego są zastępowane innym ciągiem podrzędnym.
Parametry:
- wyrażenie ciągu. To jest ciąg, który będzie przeszukiwany. Może to być znak lub binarny typ danych.
- wzór. To jest ciąg podrzędny, który zostałby zastąpiony. Może to być znak lub binarny typ danych. Argument wzorca nie może być pustym ciągiem.
- zastąpienie. Jest to ciąg podrzędny, który zastąpiłby ciąg podrzędny wzorca. Może to być znak lub dane binarne.
SELECT REPLACE('This is my string', 'is', 'XX') -- Returns 'ThXX XX my string'.
Uwagi:
- Jeśli wyrażenie ciągu nie jest typu
varchar(max)
lubnvarchar(max)
, funkcjareplace
skraca wartość zwracaną przy 8 000 znaków. - Zwracany typ danych zależy od typów danych wejściowych - zwraca
nvarchar
jeśli jedną z wartości wejściowych jestnvarchar
, lub inaczejvarchar
. - Zwraca
NULL
jeśli którykolwiek z parametrów wejściowych maNULL
String_Split
Dzieli wyrażenie łańcuchowe za pomocą separatora znaków. Zauważ, że STRING_SPLIT()
jest funkcją o wartościach STRING_SPLIT()
w tabeli i dlatego musi być używana w klauzuli FROM
.
Parametry:
- strunowy. Dowolne wyrażenie typu znakowego (
char
,nchar
,varchar
lubnvarchar
) - separator. Wyrażenie
nchar(1)
dowolnego typu (char(1)
,nchar(1)
,varchar(1)
lubnvarchar(1)
).
Zwraca tabelę z pojedynczą kolumną, w której każdy wiersz zawiera fragment ciągu. Nazwa kolumn to value
, a typ danych to nvarchar
jeśli którykolwiek z parametrów to nchar
lub nvarchar
, w przeciwnym razie varchar
.
Poniższy przykład dzieli ciąg przy użyciu spacji jako separatora:
SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
Wynik:
value
-----
Lorem
ipsum
dolor
sit
amet.
Uwagi:
Funkcja
STRING_SPLIT
jest dostępna tylko na poziomie zgodności 130 . Jeśli poziom zgodności bazy danych jest niższy niż 130, SQL Server nie będzie w stanie znaleźć i wykonać funkcjiSTRING_SPLIT
. Możesz zmienić poziom zgodności bazy danych za pomocą następującego polecenia:
ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130
Starsze wersje serwera SQL nie mają wbudowanej funkcji podziału ciągu. Istnieje wiele funkcji zdefiniowanych przez użytkownika, które rozwiązują problem dzielenia łańcucha. Możesz przeczytać artykuł Aarona Bertranda Podziel ciągi we właściwy sposób - lub kolejny najlepszy sposób na kompleksowe porównanie niektórych z nich.
Str
Zwraca dane znakowe ( varchar
) przekonwertowane z danych liczbowych.
Parametry:
- wyrażenie zmiennoprzecinkowe. Przybliżony numeryczny typ danych z kropką dziesiętną.
- długość. opcjonalny. Całkowita długość zwracanego wyrażenia łańcuchowego, w tym cyfry, przecinek dziesiętny i spacje wiodące (w razie potrzeby). Wartość domyślna to 10.
- dziesiętny. opcjonalny. Liczba cyfr po prawej stronie przecinka dziesiętnego. Jeśli wartość będzie wyższa niż 16, wynik zostanie obcięty do szesnastu miejsc po prawej stronie przecinka dziesiętnego.
SELECT STR(1.2) -- Returns ' 1'
SELECT STR(1.2, 3) -- Returns ' 1'
SELECT STR(1.2, 3, 2) -- Returns '1.2'
SELECT STR(1.2, 5, 2) -- Returns ' 1.20'
SELECT STR(1.2, 5, 5) -- Returns '1.200'
SELECT STR(1, 5, 2) -- Returns ' 1.00'
SELECT STR(1) -- Returns ' 1'
Nazwa cytatu
Zwraca ciąg Unicode otoczony ogranicznikami, aby uczynić go prawidłowym identyfikatorem rozdzielanym przez SQL Server.
Parametry:
- łańcuch znaków. Ciąg danych Unicode, do 128 znaków (
sysname
). Jeśli łańcuch wejściowy jest dłuższy niż 128 znaków, funkcja zwracanull
. - cytat postaci. Opcjonalnie Pojedynczy znak używany jako separator. Może to być pojedynczy cudzysłów (
'
lub ``), lewy lub prawy nawias kwadratowy ({
,[
,(
,<
lub>
,)
,]
,}
) lub podwójny cudzysłów ("
). Każda inna wartość zwróci null Wartość domyślna to nawiasy kwadratowe.
SELECT QUOTENAME('what''s my name?') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '[') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', ']') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '''') -- Returns 'what''s my name?'
SELECT QUOTENAME('what''s my name?', '"') -- Returns "what's my name?"
SELECT QUOTENAME('what''s my name?', ')') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '(') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '<') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '>') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '{') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '}') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '`') -- Returns `what's my name?`
Soundex
Zwraca varchar
kod ( varchar
) do oceny podobieństwa fonetycznego dwóch łańcuchów.
Parametry:
- wyrażenie postaci. Alfanumeryczne wyrażenie danych znakowych.
Funkcja soundex tworzy czteroznakowy kod oparty na tym, jak brzmiałoby wyrażenie znaku podczas wypowiadania. pierwszy znak jest wersją pierwszego znaku parametru w dużych literach, pozostałe 3 znaki to liczby reprezentujące litery w wyrażeniu (z wyjątkiem a, e, i, o, u, h, w i y, które są ignorowane) .
SELECT SOUNDEX ('Smith') -- Returns 'S530'
SELECT SOUNDEX ('Smythe') -- Returns 'S530'
Różnica
Zwraca wartość całkowitą ( int
), która wskazuje różnicę między wartościami soundex dwóch wyrażeń znakowych.
Parametry:
- wyrażenie znakowe 1.
- wyrażenie znaków 2.
Oba parametry są alfanumerycznymi wyrażeniami danych znakowych.
Zwracana liczba całkowita to liczba znaków w wartości soundexu parametrów, które są takie same, więc 4 oznacza, że wyrażenia są bardzo podobne, a 0 oznacza, że są bardzo różne.
SELECT SOUNDEX('Green'), -- G650
SOUNDEX('Greene'), -- G650
DIFFERENCE('Green','Greene') -- Returns 4
SELECT SOUNDEX('Blotchet-Halls'), -- B432
SOUNDEX('Greene'), -- G650
DIFFERENCE('Blotchet-Halls', 'Greene') -- Returns 0
Format
Zwraca wartość NVARCHAR
sformatowaną zgodnie z określonym formatem i kulturą (jeśli określono). Jest to używane głównie do konwertowania typów daty i godziny na ciągi.
Parametry:
-
value
. Wyrażenie obsługiwanego typu danych do sformatowania. prawidłowe typy są wymienione poniżej. -
format
.NVARCHAR
formatuNVARCHAR
. Zobacz oficjalną dokumentację Microsoft dla ciągów formatu standardowego i niestandardowego . -
culture
. Opcjonalnie Argumentnvarchar
określający kulturę. Wartość domyślna to kultura bieżącej sesji.
DATA
Używanie ciągów formatu standardowego:
DECLARE @d DATETIME = '2016-07-31';
SELECT
FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result' -- Returns '7/31/2016'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31/07/2016'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result' -- Returns '31.07.2016'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result' -- Returns '2016/7/31'
,FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result' -- Returns 'Sunday, July 31, 2016'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31 July 2016'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result' -- Returns 'Sonntag, 31. Juli 2016'
Używanie ciągów formatu niestandardowego:
SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' -- Returns '31/07/2016'
,FORMAT(123456789,'###-##-####') AS 'Custom Number Result' -- Returns '123-45-6789',
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','en-US') AS 'US' -- Returns 'Sunday, July 31, 2016 12:00:00 AM'
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','hi-IN') AS 'Hindi' -- Returns रविवार, जुलाई 31, 2016 12:00:00 पूर्वाह्न
,FORMAT ( @d, 'dddd', 'en-US' ) AS 'US' -- Returns 'Sunday'
,FORMAT ( @d, 'dddd', 'hi-IN' ) AS 'Hindi' -- Returns 'रविवार'
FORMAT
może być również używany do formatowania CURRENCY
, PERCENTAGE
i NUMBERS
.
WALUTA
DECLARE @Price1 INT = 40
SELECT FORMAT(@Price1,'c','en-US') AS 'CURRENCY IN US Culture' -- Returns '$40.00'
,FORMAT(@Price1,'c','de-DE') AS 'CURRENCY IN GERMAN Culture' -- Returns '40,00 €'
Możemy podać liczbę cyfr po przecinku.
DECLARE @Price DECIMAL(5,3) = 40.356
SELECT FORMAT( @Price, 'C') AS 'Default', -- Returns '$40.36'
FORMAT( @Price, 'C0') AS 'With 0 Decimal', -- Returns '$40'
FORMAT( @Price, 'C1') AS 'With 1 Decimal', -- Returns '$40.4'
FORMAT( @Price, 'C2') AS 'With 2 Decimal', -- Returns '$40.36'
ODSETEK
DECLARE @Percentage float = 0.35674
SELECT FORMAT( @Percentage, 'P') AS '% Default', -- Returns '35.67 %'
FORMAT( @Percentage, 'P0') AS '% With 0 Decimal', -- Returns '36 %'
FORMAT( @Percentage, 'P1') AS '% with 1 Decimal' -- Returns '35.7 %'
NUMER
DECLARE @Number AS DECIMAL(10,2) = 454545.389
SELECT FORMAT( @Number, 'N','en-US') AS 'Number Format in US', -- Returns '454,545.39'
FORMAT( @Number, 'N','en-IN') AS 'Number Format in INDIA', -- Returns '4,54,545.39'
FORMAT( @Number, '#.0') AS 'With 1 Decimal', -- Returns '454545.4'
FORMAT( @Number, '#.00') AS 'With 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '#,##.00') AS 'With Comma and 2 Decimal', -- Returns '454,545.39'
FORMAT( @Number, '##.00') AS 'Without Comma and 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '000000000') AS 'Left-padded to nine digits' -- Returns '000454545'
Lista prawidłowych typów wartości: ( źródło )
Category Type .Net type
-------------------------------------------
Numeric bigint Int64
Numeric int Int32
Numeric smallint Int16
Numeric tinyint Byte
Numeric decimal SqlDecimal
Numeric numeric SqlDecimal
Numeric float Double
Numeric real Single
Numeric smallmoney Decimal
Numeric money Decimal
Date and Time date DateTime
Date and Time time TimeSpan
Date and Time datetime DateTime
Date and Time smalldatetime DateTime
Date and Time datetime2 DateTime
Date and Time datetimeoffset DateTimeOffset
Ważne notatki:
-
FORMAT
zwracaNULL
dla błędów innych niż niepoprawna kultura. Na przykład zwracana jestNULL
jeśli wartość określona w formacie jest niepoprawna. -
FORMAT
opiera się na obecności środowiska uruchomieniowego Common Language Runtime (CLR) .NET Framework. -
FORMAT
opiera się na regułach formatowania CLR, które nakazują ucieczkę dwukropków i kropek. Dlatego, gdy łańcuch formatu (drugi parametr) zawiera dwukropek lub kropkę, dwukropek lub kropka muszą być poprzedzone odwrotnym ukośnikiem, gdy wartość wejściowa (pierwszy parametr) jest typu danych czasowych.
Zobacz także Formatowanie daty i godziny na przykładzie dokumentacji FORMATU .
String_escape
Ucieka znaki specjalne w tekstach i zwraca tekst ( nvarchar(max)
) ze znakami ucieczki.
Parametry:
tekst. jest wyrażeniem
nvarchar
reprezentującym ciąg, który powinien byćnvarchar
znakiem ucieczki.rodzaj. Unikanie reguł, które zostaną zastosowane. Obecnie jedyną obsługiwaną wartością jest
'json'
.
SELECT STRING_ESCAPE('\ /
\\ " ', 'json') -- returns '\\\t\/\n\\\\\t\"\t'
Lista znaków, które będą uciekane:
Special character Encoded sequence
-------------------------------------
Quotation mark (") \"
Reverse solidus (\) \\
Solidus (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \t
Control character Encoded sequence
------------------------------------
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f