2016-12-08 1 views
0

수식이있는 열이 있습니다. 수식에있는 정수만 추출하여 다음 행에 넣어야합니다. 이 공식의 경우, 예상SQL을 사용하여 수식 (문자열)에서 정수를 추출하십시오.

Column A 
(((23-22)/23)*100) 

출력은 다음과 내가 SQL에서이를 구현하려면 100

Column A 
    23 
    22 

하지 않고있다. 도와주세요. 미리 감사드립니다.

편집 1 : 수식의 정수는 실제로 다른 테이블의 ID입니다. 나는이 공식 내가 그 표 1은 100

Edit2가로 Tbl1ID이없는 그것을 본

Table 1   Table 2 
Tbl1ID   Tabl2Id Formula 
22    1   (((23-22)/23)*100) 
23    2   24 + 25 
24    
25 

의 ID가 현재의 테이블을 조인 할 필요가 : 아마 내 접근 방식은 옳지 않다. 실제 요구 사항은 ID에 연결된 이름으로 정수를 대체해야합니다.

Table 1   Table 2       Table 3(Required) 
Tbl1ID Name  Tbl2Id Formula    Col1 
    23  a   1  (((23-22)/23)*100)  (((a-b)/a)*100) 
    22  b    
+0

항상 문자열이 동일한 형식을? 위처럼. – Buddi

+0

왜 100 아니야? –

+3

이것은 데이터베이스가 아닌 파서에 대한 작업입니다. 열을 Java, C#, Python 등으로 가져 와서 작업하십시오. –

답변

1

이 시도 :

DECLARE @TEST TABLE (TBL1ID INT) 
INSERT INTO @TEST VALUES ('22') 
INSERT INTO @TEST VALUES ('23') 
INSERT INTO @TEST VALUES ('24') 
INSERT INTO @TEST VALUES ('25') 

DECLARE @NUM TABLE (INTE INT) 
DECLARE @FORM VARCHAR(100)='(((23-22)/23)*100)',@VAL VARCHAR(MAX) 

WHILE(PATINDEX('%[0-9]%',@FORM))>0 
BEGIN 
    SET @VAL=(SELECT LEFT(VAL,PATINDEX('%[^0-9]%', VAL+'A')-1) FROM(
     SELECT SUBSTRING(@FORM, PATINDEX('%[0-9]%', @FORM), LEN(@FORM)) VAL)X) 
    INSERT INTO @NUM VALUES(@VAL) 
    SET @FORM= SUBSTRING(@FORM, PATINDEX('%[0-9]%', @FORM)+LEN(@VAL),LEN(@FORM)) 
END 

SELECT DISTINCT * FROM @NUM WHERE INTE IN (SELECT * FROM @TEST) 
+0

감사합니다. 이것을 시도 할 것이고 만약 내가 어떤 이슈에 직면한다면 .. 돌아올 것이다 :) – nam

관련 문제