Zoeken…


Opmerkingen

Lijst met stringfuncties (alfabetisch gesorteerd):

Retourneert een subtekenreeks die begint met het meest linkse teken van een tekenreeks en tot de opgegeven maximale lengte.

parameters:

  1. karakteruitdrukking. De tekenuitdrukking kan van elk gegevenstype zijn dat impliciet kan worden geconverteerd naar varchar of nvarchar , behalve text of ntext
  2. maximale lengte. Een geheel getal tussen 0 en bigint maximumwaarde (9,223,372,036,854,775,807).
    Als de parameter max length negatief is, wordt een fout gegenereerd.
SELECT LEFT('This is my string', 4) -- result: 'This'

Als de maximale lengte meer is dan het aantal tekens in de tekenreeks, wordt de tekenreeks geretourneerd.

SELECT LEFT('This is my string', 50) -- result: 'This is my string'

Rechtsaf

Retourneert een subtekenreeks die het meest rechtse deel van de tekenreeks is, met de opgegeven maximale lengte.

parameters:

  1. karakteruitdrukking. De tekenuitdrukking kan van elk gegevenstype zijn dat impliciet kan worden geconverteerd naar varchar of nvarchar , behalve text of ntext
  2. maximale lengte. Een geheel getal tussen 0 en bigint maximumwaarde (9,223,372,036,854,775,807). Als de parameter max length negatief is, wordt een fout gegenereerd.
SELECT RIGHT('This is my string', 6) -- returns 'string'

Als de maximale lengte meer is dan het aantal tekens in de tekenreeks, wordt de tekenreeks geretourneerd.

SELECT RIGHT('This is my string', 50) -- returns 'This is my string'

subtekenreeks

Retourneert een substring die begint met het teken dat zich in de opgegeven startindex en de opgegeven maximale lengte bevindt.

parameters:

  1. Karakteruitdrukking. De tekenuitdrukking kan van elk gegevenstype zijn dat impliciet kan worden geconverteerd naar varchar of nvarchar , behalve text of ntext .
  2. Start index. Een getal ( int of bigint ) dat de startindex van de gevraagde substring aangeeft. ( Opmerking: strings in sql-server zijn base 1-index, wat betekent dat het eerste teken van de string index 1 is). Dit aantal kan kleiner zijn dan 1. In dit geval, als de som van de startindex en de maximale lengte groter is dan 0, is de retourreeks een tekenreeks die begint met de eerste tekenreeks van de tekenuitdrukking en met de lengte van (startindex + max lengte - 1). Als het kleiner is dan 0, wordt een lege tekenreeks geretourneerd.
  3. Maximale lengte. Een geheel getal tussen 0 en bigint maximumwaarde (9,223,372,036,854,775,807). Als de parameter max length negatief is, wordt een fout gegenereerd.
SELECT SUBSTRING('This is my string', 6, 5) -- returns 'is my'

Als de maximale lengte + startindex groter is dan het aantal tekens in de tekenreeks, wordt de tekenreeks geretourneerd.

SELECT SUBSTRING('Hello World',1,100) -- returns 'Hello World'

Als de startindex groter is dan het aantal tekens in de tekenreeks, wordt een lege tekenreeks geretourneerd.

SELECT SUBSTRING('Hello World',15,10) -- returns ''

ASCII

Retourneert een int-waarde die de ASCII-code van het meest linkse teken van een tekenreeks vertegenwoordigt.

SELECT ASCII('t') -- Returns 116
SELECT ASCII('T') -- Returns 84
SELECT ASCII('This') -- Returns 84

Als de tekenreeks Unicode is en het meest linkse teken niet ASCII maar representatief is in de huidige sortering, kan een waarde groter dan 127 worden geretourneerd:

SELECT ASCII(N'ï') -- returns 239 when `SERVERPROPERTY('COLLATION') = 'SQL_Latin1_General_CP1_CI_AS'`

Als de tekenreeks Unicode is en het meest linkse teken niet kan worden weergegeven in de huidige sortering, wordt de int-waarde van 63 geretourneerd: (die het vraagteken in ASCII vertegenwoordigt):

SELECT ASCII(N'߷') -- returns 63
SELECT ASCII(nchar(2039)) -- returns 63

charIndex

Retourneert de startindex van het eerste exemplaar van een tekenreeksexpressie in een andere tekenreeksuitdrukking.

Lijst met parameters:

  1. Te zoeken tekenreeks (maximaal 8000 tekens)
  2. String om te zoeken (elk geldig gegevenstype en lengte van tekens, inclusief binair)
  3. (Optioneel) index om te beginnen. Een aantal type int of big int. Indien weggelaten of kleiner dan 1, begint het zoeken aan het begin van de string.

Als de te zoeken tekenreeks varchar(max) , nvarchar(max) of varbinary(max) , retourneert de functie CHARINDEX een bigint waarde. Anders zal het een int teruggeven.

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

verkolen

Retourneert een teken voorgesteld door een int ASCII-code.

SELECT CHAR(116) -- Returns 't'
SELECT CHAR(84)  -- Returns 'T'

Dit kan worden gebruikt om nieuwe regel / regelinvoer CHAR(10) , koerierretour CHAR(13) , enz. Te introduceren . Zie AsciiTable.com voor referentie.

Als de argumentwaarde niet tussen 0 en 255 ligt, retourneert de functie CHAR NULL .
Het CHAR van de CHAR functie is char(1)

Len

Retourneert het aantal tekens van een tekenreeks.
Opmerking: de LEN functie negeert volgspaties:

SELECT LEN('My string'), -- returns 9
       LEN('My string   '), -- returns 9
       LEN('   My string') -- returns 12

Als de lengte inclusief volgspaties gewenst is, zijn er verschillende technieken om dit te bereiken, hoewel elk zijn nadelen heeft. Een techniek is om een enkel teken aan de string toe te voegen en vervolgens de LEN minus één te gebruiken:

DECLARE @str varchar(100) = 'My string   '
SELECT LEN(@str + 'x') - 1 -- returns 12

Het nadeel hiervan is dat als het type van de tekenreeksvariabele of kolom de maximale lengte heeft, de toevoeging van het extra teken wordt weggegooid en de resulterende lengte nog steeds geen volgspaties telt. Om dat aan te pakken, lost de volgende gewijzigde versie het probleem op en geeft het in alle gevallen de juiste resultaten ten koste van een kleine hoeveelheid extra uitvoeringstijd, en daarom (correcte resultaten, inclusief met surrogaatparen, en redelijke uitvoeringssnelheid) lijkt de beste techniek om te gebruiken:

SELECT LEN(CONVERT(NVARCHAR(MAX), @str) + 'x') - 1

Een andere techniek is om de DATALENGTH functie te gebruiken.

DECLARE @str varchar(100) = 'My string   '
SELECT DATALENGTH(@str) -- returns 12

Het is echter belangrijk op te merken dat DATALENGTH de lengte in bytes van de string in het geheugen retourneert. Dit zal anders zijn voor varchar versus nvarchar .

DECLARE @str nvarchar(100) = 'My string   '
SELECT DATALENGTH(@str) -- returns 24

U kunt dit aanpassen door de datalengte van de string te delen door de datalengte van een enkel teken (dat van hetzelfde type moet zijn). Het onderstaande voorbeeld doet dit, en behandelt ook het geval waarin de doeltekenreeks leeg is, waardoor delen door nul wordt vermeden.

DECLARE @str nvarchar(100) = 'My string   '
SELECT DATALENGTH(@str) / DATALENGTH(LEFT(LEFT(@str, 1) + 'x', 1)) -- returns 12

Zelfs dit heeft echter een probleem in SQL Server 2012 en hoger. Het zal onjuiste resultaten produceren wanneer de string surrogaatparen bevat (sommige karakters kunnen meer bytes bezetten dan andere karakters in dezelfde string).

Een andere techniek is om REPLACE te gebruiken om spaties te converteren naar een niet-spatie karakter en de LEN van het resultaat te nemen. Dit geeft in alle gevallen correcte resultaten, maar heeft een zeer slechte uitvoeringssnelheid met lange snaren.

concat

SQL Server 2012

Retourneert een tekenreeks die het resultaat is van twee of meer samengevoegde tekenreeksen. CONCAT accepteert twee of meer argumenten.

SELECT CONCAT('This', ' is', ' my', ' string') -- returns 'This is my string'

Opmerking: in tegenstelling tot het samenvoegen van tekenreeksen met behulp van de tekenreeks-samenvoegingsoperator ( + ), zal deze bij het doorgeven van een nulwaarde aan de concat functie impliciet worden omgezet in een lege tekenreeks:

SELECT CONCAT('This', NULL, ' is', ' my', ' string'), -- returns 'This is my string'
       'This' + NULL + ' is' + ' my' + ' string' -- returns NULL.

Ook argumenten van een niet-stringtype worden impliciet omgezet in een string:

SELECT CONCAT('This', ' is my ', 3, 'rd string') -- returns 'This is my 3rd string'

Variabelen van het niet-stringtype worden ook geconverteerd naar stringindeling, het is niet nodig om deze handmatig te verbergen of naar string te casten:

DECLARE @Age INT=23;
SELECT CONCAT('Ram is ', @Age,' years old');  -- returns 'Ram is 23 years old'
SQL Server 2012

Oudere versies ondersteunen de CONCAT functie niet en moeten in plaats daarvan de string-aaneenschakeling ( + ) gebruiken. Niet-stringtypen moeten worden gegoten of geconverteerd naar stringtypen om ze op deze manier samen te voegen.

SELECT 'This is the number ' + CAST(42 AS VARCHAR(5)) --returns 'This is the number 42'

Lager

Retourneert een varchar ( varchar of nvarchar ) na het converteren van alle hoofdletters naar kleine letters.

parameters:

  1. Karakteruitdrukking. Elke uitdrukking van karakter of binaire gegevens die impliciet kan worden geconverteerd naar 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'

Bovenste

Retourneert een varchar ( varchar of nvarchar ) na het converteren van alle kleine letters naar hoofdletters.

parameters:

  1. Karakteruitdrukking. Elke uitdrukking van karakter of binaire gegevens die impliciet kan worden geconverteerd naar 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

Retourneert een varchar ( varchar of nvarchar ) na het verwijderen van alle voorloop witte spaties, dat wil zeggen witte spaties van links tot het eerste niet-witte spaties.

parameters:

  1. karakteruitdrukking. Elke expressie van tekens of binaire gegevens die impliciet kunnen worden geconverteerd naar varcher , behalve text , ntext en image .
SELECT LTRIM('    This is my string') -- Returns 'This is my string'

rtrim

Retourneert een varchar ( varchar of nvarchar ) na het verwijderen van alle achterliggende witte spaties, dwz spaties vanaf het rechteruiteinde van de tekenreeks tot het eerste niet-witte spatieteken links.

parameters:

  1. karakteruitdrukking. Elke expressie van tekens of binaire gegevens die impliciet kunnen worden geconverteerd naar varcher , behalve text , ntext en image .
SELECT RTRIM('This is my string     ') -- Returns 'This is my string'

Unicode

Retourneert de gehele waarde die de Unicode-waarde van het eerste teken van de invoeruitdrukking vertegenwoordigt.

parameters:

  1. Unicode-tekenuitdrukking. Elke geldige nchar of nvarchar uitdrukking.
SELECT UNICODE(N'Ɛ') -- Returns 400

DECLARE @Unicode nvarchar(11) = N'Ɛ is a char'
SELECT UNICODE(@Unicode) -- Returns 400

nchar

Retourneert het Unicode-teken (s) ( nchar(1) of nvarchar(2) ) die overeenkomt met het argument voor gehele getallen dat wordt ontvangen, zoals gedefinieerd door de Unicode-standaard.

parameters:

  1. gehele uitdrukking. Elke integer-expressie die een positief getal tussen 0 en 65535 is, of als de sortering van de database vlag voor aanvullende tekens (CS) ondersteunt, het ondersteunde bereik tussen 0 en 1114111 ligt. Als de integer-expressie niet binnen dit bereik valt, is null teruggekeerd.
SELECT NCHAR(257) -- Returns 'ā'
SELECT NCHAR(400) -- Returns 'Ɛ'

Omgekeerde

Retourneert een tekenreekswaarde in omgekeerde volgorde.

parameters:

  1. tekenreeksuitdrukking. Elke tekenreeks of binaire gegevens die impliciet kunnen worden geconverteerd naar varchar .
Select REVERSE('Sql Server') -- Returns 'revreS lqS'

PATINDEX

Retourneert de startpositie van de eerste keer dat het opgegeven patroon in de opgegeven expressie voorkomt.

parameters:

  1. patroon. Een karakteruitdrukking bevat de te vinden reeks. Beperkt tot een maximale lengte van 8000 tekens. Jokertekens ( % , _ ) kunnen in het patroon worden gebruikt. Als het patroon niet met een jokerteken begint, kan het alleen overeenkomen met wat zich in het begin van de uitdrukking bevindt. Als het niet eindigt met een jokerteken, kan het alleen overeenkomen met wat er aan het einde van de uitdrukking staat.

  2. uitdrukking. Elk stringgegevenstype.

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. 

Ruimte

Retourneert een tekenreeks ( varchar ) van herhaalde spaties.

parameters:

  1. gehele uitdrukking. Elke uitdrukking met gehele getallen, tot 8000. Indien negatief, wordt null geretourneerd. indien 0, wordt een lege string teruggegeven. (Gebruik Repliceren om een tekenreeks langer dan 8000 spaties te retourneren.
SELECT SPACE(-1) -- Returns NULL
SELECT SPACE(0)  -- Returns an empty string
SELECT SPACE(3)  -- Returns '   ' (a string containing 3 spaces)

repliceren

Herhaalt een tekenreekswaarde een opgegeven aantal keren.

parameters:

  1. tekenreeksuitdrukking. String-expressie kan een tekenreeks of binaire gegevens zijn.
  2. gehele uitdrukking. Elk geheel getal, inclusief bigint . Indien negatief, wordt null geretourneerd. Als 0, wordt een lege string teruggegeven.
SELECT REPLICATE('a', -1)  -- Returns NULL

SELECT REPLICATE('a', 0)  -- Returns ''

SELECT REPLICATE('a', 5)  -- Returns 'aaaaa'

SELECT REPLICATE('Abc', 3) -- Returns 'AbcAbcAbc'

Opmerking: Als de tekenreeksexpressie niet van het type varchar(max) of nvarchar(max) , zal de retourwaarde niet hoger zijn dan 8000 tekens. Repliceren stopt voordat de tekenreeks wordt toegevoegd waardoor de retourwaarde die limiet overschrijdt:

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

Vervangen

Retourneert een tekenreeks ( varchar of nvarchar ) waarbij alle exemplaren van een opgegeven subtekenreeks worden vervangen door een andere subtekenreeks.

parameters:

  1. tekenreeksuitdrukking. Dit is de tekenreeks waarnaar wordt gezocht. Het kan een karakter of binair gegevenstype zijn.
  2. patroon. Dit is de subtekenreeks die zou worden vervangen. Het kan een karakter of binair gegevenstype zijn. Het patroonargument kan geen lege string zijn.
  3. vervanging. Dit is de subtekenreeks die de subtekenreeks van het patroon zou vervangen. Het kan een karakter of binaire gegevens zijn.
SELECT REPLACE('This is my string', 'is', 'XX') -- Returns 'ThXX XX my string'.

Opmerkingen:

  • Als tekenreeksexpressie niet van het type varchar(max) of nvarchar(max) , de replace functie afknottingen de retourwaarde bij 8000 tekens.
  • Retourgegevenstype is afhankelijk van invoergegevenstypen - retourneert nvarchar als een van de invoerwaarden nvarchar , of anders varchar .
  • Retourneer NULL als een van de invoerparameters NULL

String_Split

SQL Server 2016

Splitst een tekenreeksexpressie met een tekenscheidingsteken. Merk op dat STRING_SPLIT() een functie met STRING_SPLIT() is en daarom moet worden gebruikt binnen de clausule FROM .

parameters:

  1. draad. Elke karaktertype-uitdrukking ( char , nchar , varchar of nvarchar )
  2. seperator. Een expressie van elk type van elk type ( char(1) , nchar(1) , varchar(1) of nvarchar(1) ).

Retourneert een enkele kolomtabel waarbij elke rij een fragment van de string bevat. De naam van de kolommen is value en het gegevenstype is nvarchar als een van de parameters nchar of nvarchar , anders varchar .

In het volgende voorbeeld wordt een tekenreeks gesplitst waarbij de spatie als scheidingsteken wordt gebruikt:

SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');

Resultaat:

value
-----
Lorem
ipsum
dolor
sit
amet.

Opmerkingen:

De functie STRING_SPLIT is alleen beschikbaar onder compatibiliteitsniveau 130 . Als het compatibiliteitsniveau van uw database lager is dan 130, kan SQL Server de functie STRING_SPLIT niet vinden en uitvoeren. U kunt het compatibiliteitsniveau van een database wijzigen met de volgende opdracht:

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

Oudere versies van sql-server hebben geen ingebouwde split string-functie. Er zijn veel door de gebruiker gedefinieerde functies die het probleem van het splitsen van een string aanpakken. U kunt het artikel Splitreeksen van Aaron Bertrand op de juiste manier lezen - of de op een na beste manier voor een uitgebreide vergelijking van sommige.

Str

Retourneert varchar ( varchar ) geconverteerd van numerieke gegevens.

parameters:

  1. zwevende uitdrukking. Een bij benadering numeriek gegevenstype met een decimale punt.
  2. lengte. optioneel. De totale lengte van de tekenreeksuitdrukking die zou terugkeren, inclusief cijfers, decimale punt en voorloopspaties (indien nodig). De standaardwaarde is 10.
  3. decimale. optioneel. Het aantal cijfers rechts van de komma. Als deze hoger is dan 16, wordt het resultaat afgekapt tot zestien plaatsen rechts van de komma.
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'

Quotename

Retourneert een Unicode-tekenreeks omgeven door scheidingstekens om er een geldig SQL Server-gescheiden ID van te maken.

parameters:

  1. tekenreeks. Een reeks Unicode-gegevens, maximaal 128 tekens ( sysname ). Als een invoerreeks langer is dan 128 tekens, retourneert de functie null .
  2. aanhalingsteken. Optioneel Een enkel teken om als scheidingsteken te gebruiken. Dit kan een enkel aanhalingsteken zijn ( ' of' '), een linker of rechter haakje ( { , [ , ( , < of > , ) , ] , } ) of een dubbel aanhalingsteken ( " ). Elke andere waarde retourneert null Standaardwaarde is vierkante haken.
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

Retourneert een code van vier tekens ( varchar ) om de fonetische overeenkomst van twee tekenreeksen te evalueren.

parameters:

  1. karakteruitdrukking. Een alfanumerieke uitdrukking van karaktergegevens.

De functie soundex maakt een code van vier tekens die is gebaseerd op hoe de tekenuitdrukking zou klinken wanneer deze wordt uitgesproken. het eerste teken is de hoofdletterversie van het eerste teken van de parameter, de rest 3 tekens zijn cijfers die de letters in de uitdrukking vertegenwoordigen (behalve a, e, i, o, u, h, w en y die worden genegeerd) .

SELECT SOUNDEX ('Smith') -- Returns 'S530'

SELECT SOUNDEX ('Smythe') -- Returns 'S530'

Verschil

Retourneert een geheel getal ( int ) waarde die het verschil aangeeft tussen de soundex-waarden van twee tekenuitdrukkingen.

parameters:

  1. tekenuitdrukking 1.
  2. tekenuitdrukking 2.

Beide parameters zijn alfanumerieke uitdrukkingen van karaktergegevens.

Het geretourneerde gehele getal is het aantal tekens in de soundex-waarden van de parameters die hetzelfde zijn, dus 4 betekent dat de uitdrukkingen erg op elkaar lijken en 0 betekent dat ze erg verschillen.

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

Formaat

SQL Server 2012

Retourneert een NVARCHAR waarde die is opgemaakt met de opgegeven indeling en cultuur (indien opgegeven). Dit wordt voornamelijk gebruikt voor het converteren van datum / tijd-typen naar tekenreeksen.

parameters:

  1. value . Een expressie van een ondersteund datatype dat moet worden opgemaakt. geldige typen worden hieronder vermeld.
  2. format . Een NVARCHAR formaatpatroon. Raadpleeg de officiële documentatie van Microsoft voor tekenreeksen met standaardindelingen en aangepaste indelingen.
  3. culture . Optioneel nvarchar argument dat een cultuur specificeert. De standaardwaarde is de cultuur van de huidige sessie.

DATUM

Tekenreeksen met standaardindeling gebruiken:

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'

Strings met aangepaste notaties gebruiken:

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 kan ook worden gebruikt voor het formatteren van CURRENCY , PERCENTAGE en NUMBERS .

VALUTA

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 €'

We kunnen het aantal cijfers achter de komma opgeven.

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'

PERCENTAGE

   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 %'

AANTAL

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'

Lijst met geldige waardetypen: ( bron )

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

Belangrijke aantekeningen:

  • FORMAT retourneert NULL voor andere fouten dan een cultuur die niet geldig is. NULL wordt bijvoorbeeld geretourneerd als de waarde die is opgegeven in de indeling niet geldig is.
  • FORMAT afhankelijk van de aanwezigheid van .NET Framework Common Language Runtime (CLR).
  • FORMAT vertrouwt op CLR-opmaakregels die bepalen dat dubbele punten en punten moeten worden ontsnapt. Wanneer de opmaakreeks (tweede parameter) daarom een dubbele punt of punt bevat, moet de dubbele punt of periode met backslash worden ontlopen wanneer een invoerwaarde (eerste parameter) van het gegevenstype tijd is.

Zie ook Datum- en tijdnotatie met behulp van FORMAT- documentatievoorbeeld.

String_escape

SQL Server 2016

Ontsnapt speciale tekens in teksten en retourneert tekst ( nvarchar(max) ) met ontsnapte tekens.

parameters:

  1. tekst. is een nvarchar uitdrukking die de tekenreeks vertegenwoordigt waaraan moet worden ontsnapt.

  2. type. Ontsnapregels die worden toegepast. Momenteel is de enige ondersteunde waarde 'json' .

SELECT STRING_ESCAPE('\   /  
\\    "     ', 'json') -- returns '\\\t\/\n\\\\\t\"\t'

Lijst met tekens waaraan wordt ontsnapt:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow