在SQL Server中的字符串中添加SQL语句

时间:2017-08-15 21:45:26

标签: sql sql-server sql-server-2008 sql-server-2012

我有这个SQL:

var ans = Regex.Replace(inputstring, @"\{.+?\}", m => dictReplacement.TryGetValue(m.Value, out var subst) ? subst : m.Value);

我正在尝试运行DECLARE @HTMLROWS NVARCHAR(MAX) DECLARE @FIELDS NVARCHAR(MAX) DECLARE @HTMLROWSSingle NVARCHAR(MAX) DECLARE @FIELDSSingle NVARCHAR(MAX) DECLARE @Variable VARCHAR(10) DECLARE @Output VARCHAR(MAX) DECLARE @TotalContract VARCHAR(10) SET @TotalContract = 2 SET @Variable = 1 SET @HTMLROWSSingle = '<h1> This is '+@Variable+' This is a test 'Case When @TotalContract = 2 Then @Variable * .50 End Case When @TotalContract = 3 Then @Variable * .67 End ' </h1>' SET @OUTPUT= ' <table class= "FeeTable">'+@HTMLROWSSingle+'</table> <br/>' SELECT @OUTPUT 语句,以便在字符串中获取它的值。我可以使用CASE,它会得到它在字符串中的值1,但是我收到错误

  

case语句附近的语法不正确。

有人可以告诉我这里的错误吗?

由于

2 个答案:

答案 0 :(得分:1)

像这样(使用CONCAT代替&#39; +&#39;,并使用Unicode字符串文字):

DECLARE @HTMLROWS NVARCHAR(MAX) 
DECLARE @FIELDS NVARCHAR(MAX)
DECLARE @HTMLROWSSingle NVARCHAR(MAX) 
DECLARE @FIELDSSingle NVARCHAR(MAX)

Declare @Variable int
Declare @Output varchar(max)
DECLARE @TotalContract varchar(10)

Set @TotalContract = 2

Set @Variable = 1

SET @HTMLROWSSingle = concat(N'<h1> This is ',@Variable,N' 
  This is a test
   ', Case When @TotalContract = 2
             Then @Variable * .50 
          When @TotalContract = 3
          Then @Variable * .67 End ,N'

</h1>')

SET @OUTPUT= concat(N'
<table class= "FeeTable">',@HTMLROWSSingle,N'</table>
<br/>')

SELECT @OUTPUT

答案 1 :(得分:0)

DECLARE @HTMLROWS NVARCHAR(MAX) 
DECLARE @FIELDS NVARCHAR(MAX)
DECLARE @HTMLROWSSingle NVARCHAR(MAX) 
DECLARE @FIELDSSingle NVARCHAR(MAX)

DECLARE @Variable VARCHAR(10)
DECLARE @Output VARCHAR(MAX)
DECLARE @TotalContract VARCHAR(10)

SET @TotalContract = 2
SET @Variable = 1

SET @HTMLROWSSingle = '<h1> This is '+@Variable+' 
  This is a test'+
    Case When @TotalContract = 2
          Then 
            CAST(@Variable as decimal) * .50 End  + 
          Case When @TotalContract = 3
          Then 
            CAST(@Variable as decimal) * .67 End  +'

</h1>'

SET @OUTPUT= '
<table class= "FeeTable">'+@HTMLROWSSingle+'</table>
<br/>'

SELECT @OUTPUT

我找到了在字符串中插入sql的正确方法,如上所示。我仍然不确定为什么我得到了一个downvote,因为我只是想找到正确的语法。