web-dev-qa-db-fra.com

Comment remplacer le premier et le dernier caractère de la colonne dans le serveur SQL?

J'ai une colonne de base de données et sa donne une chaîne comme ,Recovery, Pump Exchange,.

Je veux supprimer la première et la dernière virgule de la chaîne.

Résultat attendu: Recovery, Pump Exchange.

9
Manish Sharma

Vous pouvez utiliser SUBSTRING pour cela:

SELECT
    SUBSTRING(col, 2, LEN(col)-2)
FROM ...

De toute évidence, une approche encore meilleure serait de ne pas placer de virgules de début et de fin ici, si cela est possible.

Je veux supprimer la dernière et première virgule seulement s'il existe, sinon pas.

L'expression devient un peu plus complexe, mais l'idée reste la même:

SELECT SUBSTRING(
    col
,  CASE LEFT(@col,1) WHEN ',' THEN 2 ELSE 1 END
,  LEN(@col) -- Start with the full length
             -- Subtract 1 for comma on the left
      - CASE LEFT(@col,1) WHEN ',' THEN 1 ELSE 0 END 
             -- Subtract 1 for comma on the right
      - CASE RIGHT(@col,1) WHEN ',' THEN 1 ELSE 0 END
)
FROM ...
21
dasblinkenlight

Alternativement à la méthode de dasblinkenlight, vous pouvez utiliser remplacer:

DECLARE @words VARCHAR(50) = ',Recovery, Pump Exchange,'
SELECT REPLACE(','+ @words + ',',',,','')
4
bendataclear

L'utilisation de LEN pourrait se retourner contre lui car LEN ignore les espaces de fin. Ceux-ci peuvent être ajoutés car ANSI_PADDING a la valeur ON par défaut. Donc, vous auriez besoin de RTRIM.

Pour compléter, j'ai aussi ajouté LTRIM ...

REVERSE(SUBSTRING(REVERSE(RTRIM(LTRIM(SUBSTRING(MyCol, 2, 8000)))), 2, 8000))
3
gbn

Utilisez Substring():

SET @String=SUBSTRING(@String ,2,Len(@String)-2)

SUBSTRING() renvoie une partie d'une expression.

Syntaxe:

SUBSTRING ( expression ,start , length )
1
Raging Bull

Essayez comme ça:

if(Substring(@mykeyword, 1,1) = ',' and Substring(@mykeyword, LEN(@mykeyword) - 1, LEN(@mykeyword))=',')
SET @mykeyword = Substring(@mykeyword, 2, LEN(@mykeyword) - 2)
0
Rahul Tripathi
SELECT LEFT(RIGHT(',Recovery, Pump Exchange,',LEN(',Recovery, Pump Exchange,')-1),LEN(',Recovery, Pump Exchange,')-2)
0
TaBi

Pour supprimer le même caractère, vous pouvez utiliser la fonction système ci-dessous TRIM

Seulement à partir de 2017

DECLARE @str VARCHAR(MAX) = '[REMOVE THIS CLOSE BRACKET]'

SELECT TRIM('[]' FROM @str)

Mais pour supprimer différents personnages, vous devez utiliser SUBSTRING.

SELECT SUBSTRING(@str,2,LEN(@str)-2)
0
Ragul