Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wstawić ciąg do innego ciągu w SQL Server za pomocą STUFF()

W SQL Server możesz użyć T-SQL STUFF() funkcja, aby wstawić ciąg do innego ciągu. Dzięki temu możesz na przykład wstawić słowo w określonej pozycji. Pozwala także zamienić słowo w określonej pozycji.

Oto oficjalna składnia:

STUFF ( character_expression , start , length , replaceWith_expression )
  • character_expression to oryginalny ciąg. W rzeczywistości może to być stała, zmienna lub kolumna danych znakowych lub binarnych.
  • start określa pozycję początkową (tj. miejsce, w którym zostanie wstawiony nowy ciąg).
  • length to ile znaków ma zostać usuniętych z oryginalnego ciągu.
  • replaceWith_expression to wstawiany ciąg. replaceWith_expression może być stałą, zmienną lub kolumną danych znakowych lub binarnych.

Zamień słowo

Oto przykład, w którym zamieniam słowo w ciągu.

SELECT STUFF('Cats and dogs', 6, 3, 'like');

Wynik:

Cats like dogs

W tym przypadku określam, że słowo like należy wstawić na pozycji 6, a 3 znaki powinny zostać usunięte z oryginalnego ciągu (to usuwa słowo and ). Tak więc słowo and zostanie usunięty, a słowo like jest włożony.

Wstaw słowo

Oto przykład wstawiania słowa bez usuwania czegokolwiek z oryginalnego ciągu:

SELECT STUFF('Cats and dogs', 10, 0, 'big ');

Wynik:

Cats and big dogs

Nic nie jest usuwane z oryginalnego ciągu, ponieważ określiłem 0 jako trzeci argument.

Wartości poza zakresem

Jeśli pozycja początkowa znajduje się poza długością oryginalnego ciągu, zwracana jest wartość NULL.

Przykład:

SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');

Wynik:

NULL

W tym przypadku oryginalny ciąg nie ma 20 znaków, więc wynikiem jest NULL .

To samo dzieje się, jeśli podasz 0 lub liczba ujemna:

SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');

Wynik:

NULL

Wyniki tych przykładów są sprzeczne z INSERT() w MySQL funkcja, która w tym scenariuszu zwróciłaby oryginalny ciąg. INSERT() w MySQL robi w zasadzie to samo, co funkcja STUFF() w T-SQL (z wyjątkiem takich przypadków).

Wstawianie wartości NULL

Jeśli wstawisz wartość NULL, Twój wynik po prostu usunie podaną liczbę znaków z podanej pozycji. Innymi słowy, nic nie jest wstawiane, ale znaki są nadal usuwane zgodnie z opisem.

Przykład:

SELECT STUFF('Cats and dogs', 6, 3, NULL);

Wynik:

Cats dogs

To kolejny obszar, w którym MySQL różni się od T-SQL. Wykonanie tego przykładu za pomocą funkcji INSERT() w MySQL funkcja zwróciłaby wynik NULL .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Procedura składowana T-SQL, która akceptuje wiele wartości identyfikatorów

  2. Zarządzaj plikami MDF w SQL Server 2019

  3. Instrukcja ALTER TABLE kolidowała z ograniczeniem CHECK w SQL Server - SQL Server / TSQL Tutorial Part 89

  4. Jak znaleźć działający port SQL Server?

  5. Wybierz 10 najlepszych rekordów dla każdej kategorii