Ricerca…


introduzione

Le funzioni stringa eseguono operazioni su valori stringa e restituiscono valori numerici o stringa.

Utilizzando le funzioni di stringa, è possibile, ad esempio, combinare dati, estrarre una sottostringa, confrontare stringhe o convertire una stringa in caratteri maiuscoli o minuscoli.

Sintassi

  • CONCAT (string_value1, string_value2 [, string_valueN])
  • LTRIM (character_expression)
  • RTRIM (character_expression)
  • SUBSTRING (espressione, inizio, lunghezza)
  • ASCII (character_expression)
  • REPLICATE (string_expression, integer_expression)
  • REVERSE (string_expression)
  • UPPER (character_expression)
  • TRIM ([caratteri FROM] stringa)
  • STRING_SPLIT (stringa, separatore)
  • STUFF (character_expression, start, length, replaceWith_expression)
  • REPLACE (string_expression, string_pattern, string_replacement)

Osservazioni

Riferimento di funzioni stringa per Transact-SQL / Microsoft

Riferimento a funzioni di stringa per MySQL

Riferimento a funzioni di stringa per PostgreSQL

Taglia gli spazi vuoti

Trim è usato per rimuovere lo spazio di scrittura all'inizio o alla fine della selezione

In MSSQL non esiste un singolo TRIM()

SELECT LTRIM('  Hello  ') --returns 'Hello  '
SELECT RTRIM('  Hello  ') --returns '  Hello'
SELECT LTRIM(RTRIM('  Hello  ')) --returns 'Hello'

MySql e Oracle

SELECT TRIM('  Hello  ') --returns 'Hello'

Concatenare

In SQL (standard ANSI / ISO), l'operatore per la concatenazione di stringhe è || . Questa sintassi è supportata da tutti i principali database tranne SQL Server:

SELECT 'Hello' || 'World' || '!'; --returns HelloWorld!

Molti database supportano una funzione CONCAT per unire le stringhe:

SELECT CONCAT('Hello', 'World'); --returns 'HelloWorld'

Alcuni database supportano l'uso di CONCAT per unire più di due stringhe (Oracle non lo fa):

SELECT CONCAT('Hello', 'World', '!'); --returns 'HelloWorld!'

In alcuni database, i tipi non stringa devono essere espressi o convertiti:

SELECT CONCAT('Foo', CAST(42 AS VARCHAR(5)), 'Bar'); --returns 'Foo42Bar'

Alcuni database (ad esempio Oracle) eseguono conversioni lossless implicite. Ad esempio, un CONCAT su un CLOB e NCLOB produce un NCLOB . Un CONCAT su un numero e un varchar2 produce un varchar2 , ecc .:

SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar

Alcuni database possono utilizzare l'operatore non standard + (ma in più, + funziona solo per i numeri):

SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';

Su SQL Server <2012, dove CONCAT non è supportato, + è l'unico modo per unire le stringhe.

Maiuscole e minuscole

SELECT UPPER('HelloWorld') --returns 'HELLOWORLD'
SELECT LOWER('HelloWorld') --returns 'helloworld'

substring

La sintassi è: SUBSTRING ( string_expression, start, length ) . Si noti che le stringhe SQL sono 1-indicizzate.

SELECT SUBSTRING('Hello', 1, 2) --returns 'He'
SELECT SUBSTRING('Hello', 3, 3) --returns 'llo'

Questo è spesso usato in congiunzione con la funzione LEN() per ottenere gli ultimi n caratteri di una stringa di lunghezza sconosciuta.

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'

Diviso

Divide un'espressione di stringa usando un separatore di caratteri. Nota che STRING_SPLIT() è una funzione con valori di tabella.

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

Risultato:

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

Cose

Inserisci una stringa in un'altra, sostituendo 0 o più caratteri in una determinata posizione.

Nota: la posizione start è 1-indicizzata (si inizia l'indicizzazione a 1, non a 0).

Sintassi:

STUFF ( character_expression , start , length , replaceWith_expression )  

Esempio:

SELECT STUFF('FooBarBaz', 4, 3, 'Hello') --returns 'FooHelloBaz'

Lunghezza

server SQL


La LEN non conta lo spazio finale.

SELECT LEN('Hello') -- returns 5

SELECT LEN('Hello '); -- returns 5

Il DATALENGTH conta lo spazio finale.

SELECT DATALENGTH('Hello') -- returns 5

SELECT DATALENGTH('Hello '); -- returns 6

Si noti tuttavia che DATALENGTH restituisce la lunghezza della rappresentazione di byte sottostante della stringa, che dipende, tra l'altro, dal set di caratteri utilizzato per memorizzare la stringa.

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

Oracolo


Sintassi: lunghezza (carattere)

Esempi:

SELECT Length('Bible') FROM dual; --Returns 5
SELECT Length('righteousness') FROM dual; --Returns 13
SELECT Length(NULL) FROM dual; --Returns NULL

Vedi anche: LunghezzaB, LunghezzaC, Lunghezza2, Lunghezza4

Sostituire

Sintassi:

REPLACE( stringa da cercare , stringa da cercare e sostituire , stringa da inserire nella stringa originale )

Esempio:

SELECT REPLACE( 'Peter Steve Tom', 'Steve', 'Billy' ) --Return Values: Peter Billy Tom

SINISTRA DESTRA

La sintassi è:
SINISTRA (espressione-stringa, intero)
RIGHT (espressione-stringa, intero)

SELECT LEFT('Hello',2)  --return He  
SELECT RIGHT('Hello',2) --return lo

Oracle SQL non ha le funzioni LEFT e RIGHT. Possono essere emulati con SUBSTR e LENGTH.
SUBSTR (string-expression, 1, intero)
SUBSTR (string-expression, length (string-expression) -integer + 1, intero)

SELECT SUBSTR('Hello',1,2)  --return He  
SELECT SUBSTR('Hello',LENGTH('Hello')-2+1,2) --return lo

INVERSO

La sintassi è: REVERSE (espressione di stringa)

SELECT REVERSE('Hello') --returns olleH

REPLICARE

La funzione REPLICATE concatena una stringa con se stessa un numero specificato di volte.

La sintassi è: REPLICATE (string-expression, integer)

SELECT REPLICATE ('Hello',4) --returns 'HelloHelloHelloHello'

REGEXP

MySQL 3.19

Controlla se una stringa corrisponde a un'espressione regolare (definita da un'altra stringa).

SELECT 'bedded' REGEXP '[a-f]' -- returns True

SELECT 'beam' REGEXP '[a-f]' -- returns False

Sostituisci la funzione in sql Seleziona e aggiorna la query

La funzione Sostituisci in SQL viene utilizzata per aggiornare il contenuto di una stringa. La chiamata di funzione è REPLACE () per MySQL, Oracle e SQL Server.

La sintassi della funzione Replace è:

REPLACE (str, find, repl)

L'esempio seguente sostituisce le occorrenze di South e Southern nella tabella Impiegati:

Nome di battesimo Indirizzo
Giacomo South New York
John South Boston
Michael South San Diego

Seleziona istruzione:

Se applichiamo la seguente funzione di sostituzione:

SELECT 
    FirstName, 
    REPLACE (Address, 'South', 'Southern') Address
FROM Employees 
ORDER BY FirstName 

Risultato:

Nome di battesimo Indirizzo
Giacomo Southern New York
John Boston meridionale
Michael San Diego del sud

Dichiarazione di aggiornamento:

Possiamo utilizzare una funzione di sostituzione per apportare modifiche permanenti nella nostra tabella attraverso il seguente approccio.

Update Employees 
Set city = (Address, 'South', 'Southern');

Un approccio più comune è quello di utilizzare questo in combinazione con una clausola WHERE come questa:

Update Employees 
Set Address = (Address, 'South', 'Southern')
Where Address LIKE 'South%';

ParseName

DATABASE : SQL Server

La funzione PARSENAME restituisce la parte specifica della stringa data (nome dell'oggetto). il nome dell'oggetto può contenere stringhe come nome oggetto, nome proprietario, nome database e nome server.

Maggiori dettagli MSDN: PARSENAME

Sintassi

PARSENAME('NameOfStringToParse',PartIndex)

Esempio

Per ottenere il nome dell'oggetto utilizzare l'indice della parte 1

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',1)  // returns `ObjectName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',1)     // returns `Student`

Per ottenere il nome dello schema utilizzare l'indice della parte 2

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',2)  // returns `SchemaName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',2)     // returns `school`

Per ottenere il nome del database utilizzare l'indice della parte 3

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',3) // returns `DatabaseName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',3)    // returns `SchoolDatabase` 

Per ottenere il nome del server utilizzare l'indice della parte 4

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',4)  // returns `ServerName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',4)     // returns `[1012-1111]`

PARSENAME restituisce null è specificato parte non è presente nella stringa nome oggetto specificata

INSTR

Restituisce l'indice della prima occorrenza di una sottostringa (zero se non trovata)

Sintassi: INSTR (stringa, sottostringa)

SELECT INSTR('FooBarBar', 'Bar') -- return 4
SELECT INSTR('FooBarBar', 'Xar') -- return 0


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow