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

Jak odebrat úvodní a koncové znaky v SQL Server

V SQL Server je to TRIM() Funkce se běžně používá k odstranění úvodních a koncových mezer z řetězce. Věděli jste ale, že ze začátku/konce řetězce můžete odstranit i jiné znaky? Nemusí to být mezery.

TRIM() je funkce T-SQL, která specificky odstraňuje znak mezery char(32) nebo jiné určené znaky od začátku nebo konce řetězce.

Syntaxe

Syntaxe vypadá takto:

TRIM ( [ characters FROM ] string )

string argument je povinný argument – ​​je to skutečný řetězec, který se má oříznout.

 characters FROM je volitelný argument je bit, který vám umožňuje určit, které znaky mají být odstraněny (za předpokladu, že neodstraňujete pouze znak mezery). Pokud neurčíte, které znaky, znak mezery bude oříznut.

Příklad

Zde je základní příklad oříznutí znaménka rovná se na začátku a na konci (= ) z řetězce:

SELECT TRIM('=' FROM '=SPECIALS=') AS Result;

Výsledek

Result  
--------
SPECIALS

Více instancí postavy

Také ořízne několik instancí zadaného znaku.

Příklad:

SELECT TRIM('=' FROM '===SPECIALS===') AS Result;

Výsledek:

Result  
--------
SPECIALS

Oříznutí více znaků

Umožňuje také oříznout více znaků.

Příklad:

SELECT TRIM('!*=+?' FROM '=+=*!SPECIALS?=+=') AS Result;

Výsledek:

Result  
--------
SPECIALS

Vložené prázdné místo

Pokud uvnitř oříznutého znaku/znaků existují mezery, neočekávejte, že budou oříznuty (pokud také výslovně neurčíte mezeru jako jeden ze znaků, které mají být oříznuty).

Zde je to, co mám na mysli:

SELECT TRIM('=' FROM '=   SPECIALS   =') AS Result;

Výsledek:

Result        
--------------
   SPECIALS   

V tomto případě se rovnítko ořízne, ale bílé místo zůstane. Je to proto, že bílé místo není bezprostředně vlevo a/nebo vpravo od řetězce.

Pokud chceme odstranit oba rovnítko a bílé místo, můžeme jednoduše přidat znak mezery do seznamu znaků k oříznutí:

SELECT TRIM('=' FROM '=   SPECIALS   =') AS Result;

Výsledek:

Result  
--------
SPECIALS

Postavy obklopené mezerami

Podobně jako v předchozím příkladu nemůžete očekávat, že SQL Server ořízne zadaný znak, pokud je mezi ním a začátkem/koncem řetězce mezera.

Například:

SELECT TRIM('=' FROM '   =SPECIALS=   ') AS Result;

Výsledek:

Result          
----------------
   =SPECIALS=

V tomto příkladu nebylo nic oříznuto. Je to proto, že mezi znaménkem rovná se a začátkem/koncem řetězce je mezera.

V tomto případě můžete jednoduše přidat znak mezery jako jeden ze znaků, které mají být oříznuty:

SELECT TRIM('=' FROM '   =SPECIALS=   ') AS Result;

Výsledek:

Result  
--------
SPECIALS

Další příklady použití TRIM() Chcete-li oříznout mezery zleva a zprava od řetězce, přečtěte si Jak odstranit úvodní a koncové mezery na serveru SQL.


  1. Spuštění Galera Cluster na Kubernetes

  2. Příkaz Oracle CREATE TABLE v PL/SQL s 10 příklady

  3. MySQL Change Collation of All Tables

  4. Jak nainstalovat SQL Server na Windows