2016-12-08 56 views
0

私は数式を持つ列を持っています。私は数式中に存在する整数だけを抽出し、次の行に入れなければなりません。この式では、予想SQLを使用して数式(文字列)から整数を抽出する

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

出力は100

Column A 
    23 
    22 

せずに、以下のようである私は、SQLでこれを実装したいです。助けてください。前もって感謝します。

Edit1:式の整数は、実際には別のテーブルのIDです。私は、この式Iは、その表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

関連する問題