Microsoft SQL Server
Stringfuncties
Zoeken…
Opmerkingen
Lijst met stringfuncties (alfabetisch gesorteerd):
Links
Retourneert een subtekenreeks die begint met het meest linkse teken van een tekenreeks en tot de opgegeven maximale lengte.
parameters:
- karakteruitdrukking. De tekenuitdrukking kan van elk gegevenstype zijn dat impliciet kan worden geconverteerd naar
varchar
ofnvarchar
, behalvetext
ofntext
- 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:
- karakteruitdrukking. De tekenuitdrukking kan van elk gegevenstype zijn dat impliciet kan worden geconverteerd naar
varchar
ofnvarchar
, behalvetext
ofntext
- 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:
- Karakteruitdrukking. De tekenuitdrukking kan van elk gegevenstype zijn dat impliciet kan worden geconverteerd naar
varchar
ofnvarchar
, behalvetext
ofntext
. - Start index. Een getal (
int
ofbigint
) 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. - 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:
- Te zoeken tekenreeks (maximaal 8000 tekens)
- String om te zoeken (elk geldig gegevenstype en lengte van tekens, inclusief binair)
- (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
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'
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:
- 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:
- 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:
- karakteruitdrukking. Elke expressie van tekens of binaire gegevens die impliciet kunnen worden geconverteerd naar
varcher
, behalvetext
,ntext
enimage
.
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:
- karakteruitdrukking. Elke expressie van tekens of binaire gegevens die impliciet kunnen worden geconverteerd naar
varcher
, behalvetext
,ntext
enimage
.
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:
- Unicode-tekenuitdrukking. Elke geldige
nchar
ofnvarchar
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:
- 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:
- 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:
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.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:
- 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:
- tekenreeksuitdrukking. String-expressie kan een tekenreeks of binaire gegevens zijn.
- gehele uitdrukking. Elk geheel getal, inclusief
bigint
. Indien negatief, wordtnull
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:
- tekenreeksuitdrukking. Dit is de tekenreeks waarnaar wordt gezocht. Het kan een karakter of binair gegevenstype zijn.
- patroon. Dit is de subtekenreeks die zou worden vervangen. Het kan een karakter of binair gegevenstype zijn. Het patroonargument kan geen lege string zijn.
- 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)
ofnvarchar(max)
, dereplace
functie afknottingen de retourwaarde bij 8000 tekens. - Retourgegevenstype is afhankelijk van invoergegevenstypen - retourneert
nvarchar
als een van de invoerwaardennvarchar
, of andersvarchar
. - Retourneer
NULL
als een van de invoerparametersNULL
String_Split
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:
- draad. Elke karaktertype-uitdrukking (
char
,nchar
,varchar
ofnvarchar
) - seperator. Een expressie van elk type van elk type (
char(1)
,nchar(1)
,varchar(1)
ofnvarchar(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 functieSTRING_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
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:
- zwevende uitdrukking. Een bij benadering numeriek gegevenstype met een decimale punt.
- lengte. optioneel. De totale lengte van de tekenreeksuitdrukking die zou terugkeren, inclusief cijfers, decimale punt en voorloopspaties (indien nodig). De standaardwaarde is 10.
- 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:
- tekenreeks. Een reeks Unicode-gegevens, maximaal 128 tekens (
sysname
). Als een invoerreeks langer is dan 128 tekens, retourneert de functienull
. - 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:
- 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:
- tekenuitdrukking 1.
- 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
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:
-
value
. Een expressie van een ondersteund datatype dat moet worden opgemaakt. geldige typen worden hieronder vermeld. -
format
. EenNVARCHAR
formaatpatroon. Raadpleeg de officiële documentatie van Microsoft voor tekenreeksen met standaardindelingen en aangepaste indelingen. -
culture
. Optioneelnvarchar
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
retourneertNULL
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
Ontsnapt speciale tekens in teksten en retourneert tekst ( nvarchar(max)
) met ontsnapte tekens.
parameters:
tekst. is een
nvarchar
uitdrukking die de tekenreeks vertegenwoordigt waaraan moet worden ontsnapt.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