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

Jak działa funkcja TRANSLATE() w programie SQL Server (T-SQL)

W SQL Server, T-SQL TRANSLATE() funkcja zwraca ciąg znaków podany jako pierwszy argument po tym, jak niektóre znaki podane w drugim argumencie zostaną przetłumaczone na docelowy zestaw znaków określony w trzecim argumencie.

Jest podobny do REPLACE() funkcji, ale z pewnymi istotnymi różnicami.

TRANSLATE() funkcja wymaga 3 argumentów; ciąg wejściowy, znaki do zastąpienia i znaki do zastąpienia.

Składnia

Składnia wygląda tak:

TRANSLATE ( inputString, characters, translations)

Gdzie ciąg wejściowy jest ciągiem zawierającym znaki, które mają zostać zastąpione.

znaki argument określa, które znaki należy zastąpić.

tłumaczenia argument określa, czym te znaki powinny zostać zastąpione.

Przykład 1 – Podstawowe użycie

Oto przykład tego, jak to działa:

SELECT TRANSLATE('Cat', 'at', 'ow') AS Result;

Wynik:

+----------+
| Result   |
|----------|
| Cow      |
+----------+

W tym przykładzie a i t znaki zostały zastąpione przez o i at .

W tym przypadku REPLACE() funkcja dałaby ten sam wynik. Oto dwie funkcje obok siebie:

SELECT 
  TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE',
  REPLACE('Cat', 'at', 'ow') AS 'REPLACE';

Wynik:

+-------------+-----------+
| TRANSLATE   | REPLACE   |
|-------------+-----------|
| Cow         | Cow       |
+-------------+-----------+

W tym przypadku wynik dla obu funkcji jest taki sam, ale z różnych powodów.

Oto, co zrobiła każda funkcja:

  • TRANSLATE() zastąpiono a i t (każda indywidualna postać)
  • REPLACE() zastąpiono at (ciąg)

Przykład 2 – Zamówienie mieszane

Ten przykład pokazuje, gdzie TRANSLATE() różni się od REPLACE() . W tym przykładzie zmieniam kolejność znaków do zastąpienia, a także znaki, które mają je zastąpić:

SELECT 
  TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE',
  REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';

Wynik:

+-------------+-----------+
| TRANSLATE   | REPLACE   |
|-------------+-----------|
| Cow         | Cat       |
+-------------+-----------+

W tym przypadku tylko TRANSLATE() funkcja zaczęła obowiązywać. Dzieje się tak, ponieważ ta funkcja przechodzi przez każdy znak jeden po drugim. REPLACE() z drugiej strony, szuka całego ciągu w dokładnie tej samej kolejności.

Przykład 3 – mocniejszy przykład

Poniższy przykład jest oparty na dokumentacji firmy Microsoft dla TRANSLATE() funkcjonować. Pokazuje scenariusz, w którym ta funkcja ma znaczną przewagę nad REPLACE() funkcja:

SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;

Wynik:

+---------------+
| Result        |
|---------------|
| 2*(3+4)/(7-2) |
+---------------+

Aby uzyskać równoważny wynik za pomocą REPLACE() funkcji, musielibyśmy to zrobić:

SELECT
REPLACE
(
      REPLACE
      (
            REPLACE
            (
                  REPLACE
                  (
                        '2*[3+4]/{7-2}',
                        '[',
                        '('
                  ),
                  ']',
                  ')'
            ),
            '{',
            '('
      ),
      '}',
      ')'
) AS Result;

Wynik:

+---------------+
| Result        |
|---------------|
| 2*(3+4)/(7-2) |
+---------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapisywanie pliku csv do bazy danych SQL Server za pomocą Pythona

  2. Przekroczono limit czasu zapytania SQL Server w zależności od klauzuli Where

  3. procedury składowane z sqlAlchemy

  4. Połącz wiele wierszy w jeden ciąg tekstowy za pomocą grupowania

  5. Wykonaj sp_msforeachdb w aplikacji Java