2014-04-10 4 views
2

데이터베이스에 숫자 및 영숫자가 모두 포함 된 열이 있습니다. 난 열에서 숫자 (6 숫자)를 얻고 싶습니다. 데이터의열 데이터의 숫자 부분 만 가져 오기?

예 :

TEST_123456_Prod 
DB111111P 
F222222FN 
PROD999999_SCF 

내가 제외한 모든 번호가 필터링되어이 열에서 모든 행을 반환하는 SELECT 문을 만들려고합니다.

저는 SQL Server를 사용하므로 아마도 Charindex를 사용해야하지만 어떻게 될지는 모릅니다.

답변

2

이것은 당신의 예는 모두를 위해 작동합니다

여기
SELECT 
    SUBSTRING(databasename, 
       PATINDEX('%[0-9]%', databasename), 
       LEN(databasename) - (PATINDEX('%[0-9]%', REVERSE(databasename)) + PATINDEX('%[0-9]%', databasename)) + 2) 
FROM dbs 

코드가 어떻게 작동하는지와 SQLFiddle입니다.

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 Fiddle