2

データベースに、数字と英数字の両方を含む列があります。列から数値(6つの数字)のみを取得したい。

データの例:

TEST_123456_Prod
DB111111P
F222222FN
PROD999999_SCF

この列からすべての行を返す select ステートメントを作成し、数値以外はすべてフィルターで除外したいと考えています。

私は SQL Server を使用しているので、おそらく Charindex を使用する必要がありますが、方法がわかりません。

4

2 に答える 2

3

すべての英数字を削除するには、関数を次のように作成できます。

CREATE FUNCTION [dbo].[RemoveAlphaCharacters](@InputString VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
  WHILE PATINDEX('%[^0-9]%',@InputString)>0
        SET @InputString = STUFF(@InputString,PATINDEX('%[^0-9]%',@InputString),1,'')     
  RETURN @InputString
END

GO

それを使用して、次のように目的の結果を取得します。

select dbo.RemoveAlphaCharacters(databasename)
from T1;

SQL フィドル

于 2014-04-10T12:02:17.803 に答える