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
.
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 ...
Alternativement à la méthode de dasblinkenlight, vous pouvez utiliser remplacer:
DECLARE @words VARCHAR(50) = ',Recovery, Pump Exchange,'
SELECT REPLACE(','+ @words + ',',',,','')
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))
Utilisez Substring()
:
SET @String=SUBSTRING(@String ,2,Len(@String)-2)
SUBSTRING()
renvoie une partie d'une expression.
Syntaxe:
SUBSTRING ( expression ,start , length )
Essayez comme ça:
if(Substring(@mykeyword, 1,1) = ',' and Substring(@mykeyword, LEN(@mykeyword) - 1, LEN(@mykeyword))=',')
SET @mykeyword = Substring(@mykeyword, 2, LEN(@mykeyword) - 2)
SELECT LEFT(RIGHT(',Recovery, Pump Exchange,',LEN(',Recovery, Pump Exchange,')-1),LEN(',Recovery, Pump Exchange,')-2)
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)