Zoeken…
Invoering
Stringfuncties voeren bewerkingen uit op stringwaarden en retourneren numerieke of stringwaarden.
Met tekenreeksfuncties kunt u bijvoorbeeld gegevens combineren, een substring extraheren, tekenreeksen vergelijken of een tekenreeks omzetten in hoofdletters of kleine letters.
Syntaxis
- CONCAT (string_waarde1, string_waarde2 [, string_waarde]])
- LTRIM (character_expression)
- RTRIM (karakter_expressie)
- SUBSTRING (expressie, start, lengte)
- ASCII (character_expression)
- REPLICATE (string_expression, integer_expression)
- REVERSE (string_expressie)
- UPPER (karakter_expressie)
- TRIM ([tekens VAN] string)
- STRING_SPLIT (tekenreeks, scheidingsteken)
- STUFF (karakter_expressie, start, lengte, vervangen door_expressie)
- REPLACE (string_expression, string_pattern, string_replacement)
Opmerkingen
Verwijzing naar stringfuncties voor Transact-SQL / Microsoft
Trim lege ruimtes
Trim wordt gebruikt om schrijfruimte aan het begin of einde van de selectie te verwijderen
In MSSQL is er geen enkele TRIM()
SELECT LTRIM(' Hello ') --returns 'Hello '
SELECT RTRIM(' Hello ') --returns ' Hello'
SELECT LTRIM(RTRIM(' Hello ')) --returns 'Hello'
MySql en Oracle
SELECT TRIM(' Hello ') --returns 'Hello'
Concatenate
In (standaard ANSI / ISO) SQL is de operator voor tekenreeksen ||
. Deze syntaxis wordt ondersteund door alle belangrijke databases behalve SQL Server:
SELECT 'Hello' || 'World' || '!'; --returns HelloWorld!
Veel databases ondersteunen een CONCAT
functie om strings samen te voegen:
SELECT CONCAT('Hello', 'World'); --returns 'HelloWorld'
Sommige databases ondersteunen het gebruik van CONCAT
om meer dan twee strings CONCAT
te voegen (Oracle doet dit niet):
SELECT CONCAT('Hello', 'World', '!'); --returns 'HelloWorld!'
In sommige databases moeten niet-stringtypen worden gegoten of geconverteerd:
SELECT CONCAT('Foo', CAST(42 AS VARCHAR(5)), 'Bar'); --returns 'Foo42Bar'
Sommige databases (bijv. Oracle) voeren impliciete conversies zonder verlies uit. Een CONCAT
op een CLOB
en NCLOB
levert bijvoorbeeld een NCLOB
. Een CONCAT
op een nummer en een varchar2
resulteert in een varchar2
, enz .:
SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar
Sommige databases kunnen de niet-standaard +
-operator gebruiken (maar in de meeste, werkt +
alleen voor getallen):
SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';
Op SQL Server <2012, waar CONCAT
niet wordt ondersteund, is +
de enige manier om aan strings deel te nemen.
Hoofdletters en kleine letters
SELECT UPPER('HelloWorld') --returns 'HELLOWORLD'
SELECT LOWER('HelloWorld') --returns 'helloworld'
subtekenreeks
Syntaxis is: SUBSTRING ( string_expression, start, length )
. Merk op dat SQL-reeksen 1-geïndexeerd zijn.
SELECT SUBSTRING('Hello', 1, 2) --returns 'He'
SELECT SUBSTRING('Hello', 3, 3) --returns 'llo'
Dit wordt vaak gebruikt in combinatie met de functie LEN()
om de laatste n
tekens van een tekenreeks van onbekende lengte te krijgen.
DECLARE @str1 VARCHAR(10) = 'Hello', @str2 VARCHAR(10) = 'FooBarBaz';
SELECT SUBSTRING(@str1, LEN(@str1) - 2, 3) --returns 'llo'
SELECT SUBSTRING(@str2, LEN(@str2) - 2, 3) --returns 'Baz'
spleet
Splitst een tekenreeksexpressie met een tekenscheidingsteken. Merk op dat STRING_SPLIT()
een functie met STRING_SPLIT()
is.
SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
Resultaat:
value
-----
Lorem
ipsum
dolor
sit
amet.
spul
Vul een string in een andere, waarbij 0 of meer karakters op een bepaalde positie worden vervangen.
Opmerking: start
positie 1-geïndexeerd (je begint indexering op 1, niet 0).
Syntaxis:
STUFF ( character_expression , start , length , replaceWith_expression )
Voorbeeld:
SELECT STUFF('FooBarBaz', 4, 3, 'Hello') --returns 'FooHelloBaz'
Lengte
SQL Server
De LEN telt de volgruimte niet.
SELECT LEN('Hello') -- returns 5
SELECT LEN('Hello '); -- returns 5
De DATALENGTH telt de volgruimte.
SELECT DATALENGTH('Hello') -- returns 5
SELECT DATALENGTH('Hello '); -- returns 6
Er moet echter worden opgemerkt dat DATALENGTH de lengte van de onderliggende byteweergave van de string retourneert, die onder andere afhangt van de tekenset die is gebruikt om de string op te slaan.
DECLARE @str varchar(100) = 'Hello ' --varchar is usually an ASCII string, occupying 1 byte per char
SELECT DATALENGTH(@str) -- returns 6
DECLARE @nstr nvarchar(100) = 'Hello ' --nvarchar is a unicode string, occupying 2 bytes per char
SELECT DATALENGTH(@nstr) -- returns 12
Orakel
Syntaxis: Lengte (char)
Voorbeelden:
SELECT Length('Bible') FROM dual; --Returns 5
SELECT Length('righteousness') FROM dual; --Returns 13
SELECT Length(NULL) FROM dual; --Returns NULL
Zie ook: LengteB, LengteC, Lengte2, Lengte4
Vervangen
Syntaxis:
REPLACE(
String om te zoeken ,
String om te zoeken en te vervangen ,
String om in de oorspronkelijke string te plaatsen )
Voorbeeld:
SELECT REPLACE( 'Peter Steve Tom', 'Steve', 'Billy' ) --Return Values: Peter Billy Tom
LINKS RECHTS
Syntaxis is:
LINKS (tekenreeks-expressie, geheel getal)
RECHTS (string-expressie, geheel getal)
SELECT LEFT('Hello',2) --return He
SELECT RIGHT('Hello',2) --return lo
Oracle SQL heeft geen functies LINKS en RECHTS. Ze kunnen worden geëmuleerd met SUBSTR en LENGTH.
SUBSTR (string-expressie, 1, geheel getal)
SUBSTR (string-expressie, lengte (string-expressie) -integer + 1, geheel getal)
SELECT SUBSTR('Hello',1,2) --return He
SELECT SUBSTR('Hello',LENGTH('Hello')-2+1,2) --return lo
OMGEKEERDE
Syntaxis is: REVERSE (string-expressie)
SELECT REVERSE('Hello') --returns olleH
IDENTIEKE
De functie REPLICATE
koppelt een tekenreeks een bepaald aantal keren aan zichzelf.
Syntaxis is: REPLICATE (string-expressie, geheel getal)
SELECT REPLICATE ('Hello',4) --returns 'HelloHelloHelloHello'
REGEXP
Controleert of een string overeenkomt met een reguliere expressie (gedefinieerd door een andere string).
SELECT 'bedded' REGEXP '[a-f]' -- returns True
SELECT 'beam' REGEXP '[a-f]' -- returns False
Functie vervangen in sql Zoekopdracht selecteren en bijwerken
De functie Vervangen in SQL wordt gebruikt om de inhoud van een tekenreeks bij te werken. De functieaanroep is REPLACE () voor MySQL, Oracle en SQL Server.
De syntaxis van de functie Vervangen is:
REPLACE (str, find, repl)
In het volgende voorbeeld worden South
exemplaren vervangen door Southern
in de tabel Werknemers:
Voornaam | Adres |
---|---|
James | Zuid New York |
John | South Boston |
Michael | Zuid-San Diego |
Selecteer verklaring:
Als we de volgende vervangfunctie toepassen:
SELECT
FirstName,
REPLACE (Address, 'South', 'Southern') Address
FROM Employees
ORDER BY FirstName
Resultaat:
Voornaam | Adres |
---|---|
James | Zuid-New York |
John | Zuidelijk Boston |
Michael | Zuid-San Diego |
Update verklaring:
We kunnen een vervangfunctie gebruiken om permanente wijzigingen in onze tabel aan te brengen via de volgende aanpak.
Update Employees
Set city = (Address, 'South', 'Southern');
Een meer gebruikelijke aanpak is om dit te gebruiken in combinatie met een WHERE-clausule zoals deze:
Update Employees
Set Address = (Address, 'South', 'Southern')
Where Address LIKE 'South%';
PARSENAME
DATABASE : SQL Server
De functie PARSENAME retourneert het specifieke gedeelte van de opgegeven tekenreeks (objectnaam). objectnaam kan string bevatten zoals objectnaam, naam van eigenaar, databasenaam en servernaam.
Meer informatie MSDN: PARSENAME
Syntaxis
PARSENAME('NameOfStringToParse',PartIndex)
Voorbeeld
Gebruik deelindex 1
om de objectnaam te verkrijgen
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',1) // returns `ObjectName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',1) // returns `Student`
Gebruik deelindex 2
om de schemanaam te verkrijgen
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',2) // returns `SchemaName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',2) // returns `school`
Gebruik deelindex 3
om de databasenaam te krijgen
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',3) // returns `DatabaseName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',3) // returns `SchoolDatabase`
Gebruik deelindex 4
om de servernaam te krijgen
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',4) // returns `ServerName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',4) // returns `[1012-1111]`
PARSENAME retourneert null als opgegeven onderdeel is niet aanwezig in gegeven objectnaamstring
INSTR
Retourneer de index van de eerste keer dat een substring voorkomt (nul indien niet gevonden)
Syntaxis: INSTR (tekenreeks, substring)
SELECT INSTR('FooBarBar', 'Bar') -- return 4
SELECT INSTR('FooBarBar', 'Xar') -- return 0