Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Funktionsweise der TRANSLATE()-Funktion in SQL Server (T-SQL)

In SQL Server das T-SQL TRANSLATE() Die Funktion gibt die als erstes Argument bereitgestellte Zeichenfolge zurück, nachdem einige im zweiten Argument angegebene Zeichen in einen im dritten Argument angegebenen Zielsatz von Zeichen übersetzt wurden.

Es ähnelt dem REPLACE() Funktion, aber mit einigen wichtigen Unterschieden.

Das TRANSLATE() Funktion erfordert 3 Argumente; die Eingabezeichenfolge, die zu ersetzenden Zeichen und die zu ersetzenden Zeichen.

Syntax

Die Syntax sieht so aus:

TRANSLATE ( inputString, characters, translations)

Wo inputString ist die Zeichenfolge, die die zu ersetzenden Zeichen enthält.

Die Zeichen Argument gibt an, welche Zeichen ersetzt werden sollen.

Die Übersetzungen Das Argument gibt an, wodurch diese Zeichen ersetzt werden sollen.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel dafür, wie es funktioniert:

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

Ergebnis:

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

Also in diesem Beispiel der a und t Zeichen wurden durch o ersetzt und w .

In diesem Fall das REPLACE() Die Funktion hätte das gleiche Ergebnis geliefert. Hier sind die beiden Funktionen nebeneinander:

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

Ergebnis:

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

In diesem Fall ist das Ergebnis für beide Funktionen gleich, aber aus unterschiedlichen Gründen.

Hier ist, was jede Funktion gemacht hat:

  • TRANSLATE() ersetzt a und t (jedes einzelne Zeichen)
  • REPLACE() ersetzt at (die Zeichenkette)

Beispiel 2 – Gemischte Bestellung

Dieses Beispiel zeigt, wo TRANSLATE() unterscheidet sich von REPLACE() . In diesem Beispiel ändere ich die Reihenfolge der zu ersetzenden Zeichen sowie die Zeichen, die sie ersetzen sollen:

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

Ergebnis:

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

In diesem Fall nur das TRANSLATE() Funktion wirksam wurde. Dies liegt daran, dass diese Funktion jedes Zeichen einzeln durchgeht. Das REPLACE() Die Funktion hingegen sucht nach der gesamten Zeichenfolge in genau derselben Reihenfolge.

Beispiel 3 – Ein aussagekräftigeres Beispiel

Das folgende Beispiel basiert auf der Microsoft-Dokumentation für TRANSLATE() Funktion. Es zeigt ein Szenario, in dem diese Funktion einen erheblichen Vorteil gegenüber REPLACE() hat Funktion:

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

Ergebnis:

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

Um das entsprechende Ergebnis zu erhalten, verwenden Sie REPLACE() -Funktion müssen wir Folgendes tun:

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

Ergebnis:

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