我有一个包含公式的列。我只需要提取公式中存在的整数并将它们放在下一行中。对于这个公式,
Column A
(((23-22)/23)*100)
预期输出如下,不含100
Column A
23
22
我想在sql中实现它。请帮忙。提前谢谢。
Edit1:公式中的整数实际上是另一个表中的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 :(得分: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)