sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje funkce TRANSLATE() v SQL Server (T-SQL)

V SQL Server T-SQL TRANSLATE() funkce vrací řetězec zadaný jako první argument poté, co jsou některé znaky zadané ve druhém argumentu přeloženy do cílové sady znaků zadaných ve třetím argumentu.

Je to podobné jako REPLACE() funkce, ale s některými důležitými rozdíly.

TRANSLATE() funkce vyžaduje 3 argumenty; vstupní řetězec, znaky, které mají být nahrazeny, a znaky, které je mají nahradit.

Syntaxe

Syntaxe vypadá takto:

TRANSLATE ( inputString, characters, translations)

Kde inputString je řetězec obsahující znaky, které mají být nahrazeny.

postavy argument určuje, které znaky mají být nahrazeny.

překlady argument určuje, čím mají být tyto znaky nahrazeny.

Příklad 1 – Základní použití

Zde je příklad, jak to funguje:

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

Výsledek:

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

V tomto příkladu tedy a a t znaky byly nahrazeny o a w .

V tomto případě REPLACE() funkce by přinesla stejný výsledek. Zde jsou dvě funkce vedle sebe:

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

Výsledek:

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

V tomto případě je výsledek pro obě funkce stejný, ale z různých důvodů.

Zde je to, co jednotlivé funkce dělaly:

  • TRANSLATE() nahradil a a t (každý jednotlivý znak)
  • REPLACE() nahrazeno at (řetězec)

Příklad 2 – Smíšené objednávky

Tento příklad ukazuje, kde je TRANSLATE() se liší od REPLACE() . V tomto příkladu změním pořadí znaků, které mají být nahrazeny, a také znaků, které je mají nahradit:

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

Výsledek:

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

V tomto případě pouze TRANSLATE() funkce vstoupila v platnost. Tato funkce totiž prochází každý znak jeden po druhém. REPLACE() Funkce na druhé straně hledá celý řetězec v přesně stejném pořadí.

Příklad 3 – Výkonnější příklad

Následující příklad je založen na dokumentaci společnosti Microsoft pro TRANSLATE() funkce. Ukazuje scénář, kde má tato funkce významnou výhodu oproti REPLACE() funkce:

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

Výsledek:

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

Chcete-li získat ekvivalentní výsledek pomocí REPLACE() funkci, musíme provést toto:

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

Výsledek:

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

  1. Jak změnit výchozí adresář dat MySQL/MariaDB v Linuxu

  2. Existuje nějaký způsob, jak vložit sestavy a řídicí panely power bi do vb.net nebo C# desktopové aplikace s databází sql server 2008?

  3. Vrácení informací o sloupcích z propojeného serveru v SQL Server (příklady T-SQL)

  4. Android:onUpgrade nevolá při aktualizaci databáze