【问题标题】:Adding SQL statements inside a string in SQL Server在 SQL Server 的字符串中添加 SQL 语句
【发布时间】:2017-08-15 21:45:25
【问题描述】:

我有这个 SQL:

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 语句,以便在字符串中获取它的值。我可以使用'+@Variable+',它让我得到它的值,它在字符串中是 1,但我得到一个错误

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

谁能告诉我我在这里做错了什么?

谢谢

【问题讨论】:

  • 在 CASE 的每个 END 后添加别名,在第一个 CASE 语句后添加逗号以分隔字段
  • 谢谢你的回复..你能给我看个样本吗
  • 这是一个糟糕的问题,我得到了否定

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


【解决方案1】:

像这样(使用 CONCAT 代替 '+',并使用 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

【讨论】:

  • 非常感谢.. 收到 concat 不支持的功能的错误.. 看起来我有 2008 所以不支持
  • 您可以使用 '+' 代替,但任何数字都必须转换为字符串。喜欢cast(case when ... end as nvarchar(20))
  • 我尝试在示例中使用 plus,它在插入变量时有效,但在 case 语句中使用时出现错误
  • 那是因为你做了导致[错误]的[事情]。
  • 好的,谢谢你的帮助,大卫..我明白了。关于演员阵容,我也加入了这一点。
【解决方案2】:
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 的正确方法,如上所示。我仍然不知道为什么我只是想找到正确的语法。

【讨论】:

    猜你喜欢
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多