2017-10-12 4 views
0

Si une colonne VARCHAR contient des valeurs alphanumériques. Comment puis-je supprimer uniquement les lettres et laisser tous les autres caractères s'il vous plaît? Ce n'est pas un doublon (du moins je ne le pense pas) puisque je veux laisser tous les caractères spéciaux et les nombres à sa place mais ne supprimer que les alphabets.SQL Server - Supprimer TOUTES les lettres d'une chaîne

Input  Desired Result 
    123   123 
    123S  123 
    A123,123 123,123 
    a123..A123 123..123 

J'ai essayé d'utiliser les éléments suivants, mais ne pas obtenir la sortie désirée ..

DECLARE @textval NVARCHAR(30) 
SET @textval = 'S123..S123' 

SELECT LEFT(SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000), 
      PATINDEX('%[^0-9.-]%', SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000) + 'X') -1) 

SELECT  STUFF(@textval, 1, PATINDEX('%[0-9]%', @textval)-1, '') 
+0

Je ne pense pas que ce soit un doublon car ma question était de laisser tous les caractères spéciaux et les nombres intacts et supprimer seulement les alphabets. – Harry

Répondre

1

Si vous voulez supprimer tous les Alphabets de votre String faire simplement par loop dans votre chaîne.

DECLARE @str NVARCHAR(MAX); 
DECLARE @lpcounter INT; 
SET @str = 'A123..Z123'; 
SET @lpcounter = 0; 
WHILE @lpcounter <= 26 
    BEGIN 
     SET @str = REPLACE(@str, CHAR([email protected]), ''); 
     SET @lpcounter = @lpcounter + 1; 
    END; 
SELECT @str; 
+0

Brillant .. merci .. c'est exactement ce dont j'avais besoin – Harry