2016-12-08 56 views
0

我有一列含公式的列。我只需要提取公式中存在的整數,並將它們放在下一行中。對於該式中,使用SQL從公式(字符串)中提取整數

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

預期的輸出是如下而不100

Column A 
    23 
    22 

我要在SQL中實現這一點。請幫忙。提前致謝。

編輯1:公式中的整數實際上是來自另一個表的ID。我需要加入上的ID在當前的表這個公式

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

我已經看到它,表1沒有Tbl1ID爲100

EDIT2在:也許我的做法是不正確的。實際的要求是我需要用與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