2017-10-12 23 views
0

英数字の値を持つVARCHAR列がある場合。手紙だけを取り除き、他の文字はどうしたらいいですか?これは、私がすべての特殊文字と数字をその場所に残したいが、アルファベットだけを削除したいので、重複していない(少なくとも私はそうは思わない)。SQL Server - 文字列内のすべての文字を削除します。

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

私は、次を使用して試してみましたが、所望の出力を得ることはありません。..

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

これは私の質問はすべての特殊文字と数字をそのまま残して、アルファベットのみを削除することだったとは思いません。 – Harry

答えて

1

あなたはあなたのStringからすべてのAlphabetsを削除したい場合は、単にあなたの文字列にloopてください。

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

華麗な..ありがとう..これは私が必要としていたものです – Harry

関連する問題