Szukaj…


Wprowadzenie

Funkcje łańcuchowe wykonują operacje na wartościach łańcuchowych i zwracają wartości liczbowe lub łańcuchowe.

Korzystając z funkcji ciągów, możesz na przykład łączyć dane, wyodrębniać podłańcuch, porównywać ciągi lub konwertować ciąg na wszystkie wielkie i małe litery.

Składnia

  • CONCAT (string_value1, string_value2 [, string_valueN])
  • LTRIM (wyrażenie_wyrażenia)
  • RTRIM (wyrażenie_wyrażenia)
  • SUBSTRING (wyrażenie, początek, długość)
  • ASCII (wyrażenie_wyrażenia)
  • REPLICATE (wyrażenie_łańcuchowe, wyrażenie_całkowate)
  • REVERSE (wyrażenie_łańcuchowe)
  • UPPER (wyrażenie_wyrażenia)
  • TRIM (ciąg znaków [z FROM])
  • STRING_SPLIT (ciąg, separator)
  • STUFF (wyrażenie_wyrażeniowe, początek, długość, zastąpienie_wyrażeniem)
  • REPLACE (string_expression, string_pattern, string_replacement)

Uwagi

Odwołanie do funkcji łańcuchowych dla Transact-SQL / Microsoft

Odwołanie do funkcji łańcuchowych dla MySQL

Odwołanie do funkcji łańcuchowych dla PostgreSQL

Przycinaj puste przestrzenie

Przycinanie służy do usuwania miejsca do zapisu na początku lub na końcu zaznaczenia

W MSSQL nie ma pojedynczego TRIM()

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

MySql i Oracle

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

Powiązać

W SQL (standard ANSI / ISO) operatorem konkatenacji łańcuchów jest || . Ta składnia jest obsługiwana przez wszystkie główne bazy danych oprócz SQL Server:

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

Wiele baz danych obsługuje funkcję CONCAT do łączenia ciągów:

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

Niektóre bazy danych obsługują CONCAT do łączenia więcej niż dwóch ciągów (Oracle nie):

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

W niektórych bazach danych typy nieciągłe muszą być rzutowane lub konwertowane:

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

Niektóre bazy danych (np. Oracle) wykonują niejawne konwersje bezstratne. Na przykład CONCAT na CLOB i NCLOB daje NCLOB . CONCAT na liczbie i varchar2 powoduje, że varchar2 itp .:

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

Niektóre bazy danych mogą używać niestandardowego operatora + (ale w większości + działa tylko dla liczb):

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

Na SQL Server <2012, gdzie CONCAT nie jest obsługiwany, + jest jedynym sposobem łączenia ciągów.

Wielkie i małe litery

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

Podciąg

Składnia to: SUBSTRING ( string_expression, start, length ) . Zauważ, że ciągi SQL są indeksowane 1.

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

Jest to często używane w połączeniu z funkcją LEN() aby uzyskać ostatnie n znaków ciągu o nieznanej długości.

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'

Rozdzielać

Dzieli wyrażenie łańcuchowe za pomocą separatora znaków. Zauważ, że STRING_SPLIT() jest funkcją wycenianą w tabeli.

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

Wynik:

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

Rzeczy

Umieść łańcuch w innym, zastępując 0 lub więcej znaków na określonej pozycji.

Uwaga: pozycja start jest indeksowana 1 (indeksowanie rozpoczyna się od 1, a nie 0).

Składnia:

STUFF ( character_expression , start , length , replaceWith_expression )  

Przykład:

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

Długość

SQL Server


LEN nie liczy końcowej spacji.

SELECT LEN('Hello') -- returns 5

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

DATALENGTH liczy końcowe miejsce.

SELECT DATALENGTH('Hello') -- returns 5

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

Należy jednak zauważyć, że DATALENGTH zwraca długość podstawowej bajtu reprezentacji ciągu, która zależy między innymi od zestawu znaków używanego do przechowywania ciągu.

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

Wyrocznia


Składnia: długość (char)

Przykłady:

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

Zobacz także: LengthB, LengthC, Length2, Length4

Zastąpić

Składnia:

REPLACE( Ciąg do wyszukiwania , Ciąg do wyszukiwania i zamiany , Ciąg do umieszczenia w oryginalnym ciągu )

Przykład:

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

LEWO PRAWO

Składnia to:
LEWO (wyrażenie-ciąg, liczba całkowita)
PRAWO (wyrażenie-ciąg, liczba całkowita)

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

Oracle SQL nie ma funkcji LEWEJ i PRAWEJ. Można je emulować za pomocą SUBSTR i LENGTH.
SUBSTR (wyrażenie-ciąg, 1, liczba całkowita)
SUBSTR (wyrażenie-ciąg, długość (wyrażenie-ciąg) -integer + 1, liczba całkowita)

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

REWERS

Składnia to: REVERSE (wyrażenie-ciąg)

SELECT REVERSE('Hello') --returns olleH

REPLIKA

Funkcja REPLICATE konkatenuje łańcuch ze sobą określoną liczbę razy.

Składnia to: REPLICATE (wyrażenie-ciąg, liczba całkowita)

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

REGEXP

MySQL 3.19

Sprawdza, czy ciąg pasuje do wyrażenia regularnego (zdefiniowanego przez inny ciąg).

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

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

Zamień funkcję w SQL Wybierz i zaktualizuj zapytanie

Funkcja Zamień w SQL służy do aktualizacji zawartości łańcucha. Wywołanie funkcji to REPLACE () dla MySQL, Oracle i SQL Server.

Składnia funkcji Zamień jest następująca:

REPLACE (str, find, repl)

Poniższy przykład zamienia wystąpienia South Southern w tabeli Pracownicy:

Imię Adres
James Południowy Nowy Jork
Jan South Boston
Michael South San Diego

Wybierz oświadczenie:

Jeśli zastosujemy następującą funkcję Zamień:

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

Wynik:

Imię Adres
James Południowy Nowy Jork
Jan Południowy Boston
Michael Południowe San Diego

Aktualizacja oświadczenia:

Możemy użyć funkcji zamiany, aby wprowadzić trwałe zmiany w naszej tabeli poprzez następujące podejście.

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

Bardziej powszechnym podejściem jest użycie tego w połączeniu z klauzulą WHERE, taką jak ta:

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

PARSENAME

BAZA DANYCH : SQL Server

Funkcja PARSENAME zwraca określoną część podanego ciągu (nazwa obiektu). nazwa obiektu może zawierać ciąg znaków, taki jak nazwa obiektu, nazwa właściciela, nazwa bazy danych i nazwa serwera.

Więcej informacji MSDN: PARSENAME

Składnia

PARSENAME('NameOfStringToParse',PartIndex)

Przykład

Aby uzyskać nazwę obiektu, użyj indeksu części 1

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

Aby uzyskać nazwę schematu, użyj indeksu części 2

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

Aby uzyskać nazwę bazy danych, użyj indeksu części 3

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

Aby uzyskać nazwę serwera, użyj indeksu części 4

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

PARSENAME zwróci null jest określony część nie występuje w podanym ciągu nazwy obiektu

INSTR

Zwraca indeks pierwszego wystąpienia podłańcucha (zero, jeśli nie znaleziono)

Składnia: INSTR (ciąg, podciąg)

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow