62,046
社区成员
发帖
与我相关
我的任务
分享
string str = "1+6/3+{1*3+5+[(9-1)/3+3]}+2+(5+3)/2=";
object o = new DataTable().Compute(str.Replace("=", "").Replace("{", "(").Replace("}", ")").Replace("[", "(").Replace("]", ")"), "");
Console.WriteLine(Convert.ToDouble(o).ToString("F2"));
DECLARE @STR VARCHAR(500)
SET @STR='1+6/3+{1*3+5+[(9-1)/3+3]}+2+(5+3)/2'
SELECT @STR=REPLACE(REPLACE(REPLACE(REPLACE(@STR,'{','('),'}',')'),'[','('),']',')')
EXEC('SELECT '+@STR+'')
-----------
22
DECLARE @STR VARCHAR(500)
DECLARE @STR1 VARCHAR(500)
DECLARE @STR2 VARCHAR(500)
SET @STR='1+6/3+{1*3+5+[(9-1)/3+3]}+2+(5+3)/2'
SET @STR1=SUBSTRING(@STR,1,CHARINDEX('[',@STR)-1)
SET @STR2=SUBSTRING(@STR,CHARINDEX(']',@STR)+1,LEN(@STR)-CHARINDEX(']',@STR))
SELECT @STR=SUBSTRING(@STR,CHARINDEX('[',@STR)+1,CHARINDEX(']',@STR)-CHARINDEX('[',@STR)-1)
--CREATE TABLE #T(COL VARCHAR(10))
INSERT #T EXEC('SELECT '+@STR+'')
SELECT @STR=@STR1+COL+@STR2 FROM #T
SELECT @STR=REPLACE(REPLACE(@STR,'{','('),'}',')')
EXEC('SELECT '+@STR+'')
(所影响的行数为 1 行)
-----------
22