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

Verwijzing naar stringfuncties voor MySQL

Verwijzing naar stringfuncties voor PostgreSQL

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

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

MySQL 3.19

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow