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:

  1. wyrażenie postaci. Wyrażenie znakowe może być dowolnego typu danych, który można domyślnie przekonwertować na varchar lub nvarchar , z wyjątkiem text lub ntext
  2. 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:

  1. wyrażenie postaci. Wyrażenie znakowe może być dowolnego typu danych, który można domyślnie przekonwertować na varchar lub nvarchar , z wyjątkiem text lub ntext
  2. 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:

  1. Wyrażenie postaci. Wyrażenie znakowe może być dowolnego typu danych, który można domyślnie przekonwertować na varchar lub nvarchar , z wyjątkiem text lub ntext .
  2. Rozpocznij indeks. Liczba ( int lub bigint ) 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.
  3. 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:

  1. Ciąg do znalezienia (do 8000 znaków)
  2. Ciąg do przeszukiwania (dowolny prawidłowy typ danych i długość znaków, w tym binarny)
  3. (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

SQL Server 2012

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'
SQL Server 2012

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:

  1. 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:

  1. 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:

  1. wyrażenie postaci. Dowolne wyrażenie danych znakowych lub binarnych, które można domyślnie przekonwertować na varcher , z wyjątkiem text , ntext i image .
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:

  1. wyrażenie postaci. Dowolne wyrażenie danych znakowych lub binarnych, które można domyślnie przekonwertować na varcher , z wyjątkiem text , ntext i image .
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:

  1. Wyrażenie znaku Unicode. Dowolne prawidłowe wyrażenie nchar lub nvarchar .
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:

  1. 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:

  1. 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:

  1. 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.

  2. 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:

  1. 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:

  1. wyrażenie ciągu. Wyrażenie ciągu może być ciągiem znaków lub danymi binarnymi.
  2. wyrażenie całkowite. Dowolny typ liczb całkowitych, w tym bigint . Jeśli ujemna, zwracana jest null . 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:

  1. wyrażenie ciągu. To jest ciąg, który będzie przeszukiwany. Może to być znak lub binarny typ danych.
  2. 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.
  3. 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) lub nvarchar(max) , funkcja replace 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 jest nvarchar , lub inaczej varchar .
  • Zwraca NULL jeśli którykolwiek z parametrów wejściowych ma NULL

String_Split

SQL Server 2016

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:

  1. strunowy. Dowolne wyrażenie typu znakowego ( char , nchar , varchar lub nvarchar )
  2. separator. Wyrażenie nchar(1) dowolnego typu ( char(1) , nchar(1) , varchar(1) lub nvarchar(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ć funkcji STRING_SPLIT . Możesz zmienić poziom zgodności bazy danych za pomocą następującego polecenia:

ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130
SQL Server 2016

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:

  1. wyrażenie zmiennoprzecinkowe. Przybliżony numeryczny typ danych z kropką dziesiętną.
  2. 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.
  3. 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:

  1. ł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 zwraca null .
  2. 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:

  1. 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:

  1. wyrażenie znakowe 1.
  2. 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

SQL Server 2012

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:

  1. value . Wyrażenie obsługiwanego typu danych do sformatowania. prawidłowe typy są wymienione poniżej.
  2. format . NVARCHAR formatu NVARCHAR . Zobacz oficjalną dokumentację Microsoft dla ciągów formatu standardowego i niestandardowego .
  3. culture . Opcjonalnie Argument nvarchar 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 zwraca NULL dla błędów innych niż niepoprawna kultura. Na przykład zwracana jest NULL 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

SQL Server 2016

Ucieka znaki specjalne w tekstach i zwraca tekst ( nvarchar(max) ) ze znakami ucieczki.

Parametry:

  1. tekst. jest wyrażeniem nvarchar reprezentującym ciąg, który powinien być nvarchar znakiem ucieczki.

  2. 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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow