我有这个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语句附近的语法不正确。
有人可以告诉我这里的错误吗?
由于
答案 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,因为我只是想找到正确的语法。