【问题标题】:SQL: How to concatenate comparison operator in a query?SQL:如何在查询中连接比较运算符?
【发布时间】:2016-06-17 15:39:11
【问题描述】:

我正在构建一个用户界面,用户可以在其中选择输入不同的比较操作,例如 >、=、

我需要在我的查询中反映它,所以我的查询中的 WHEREclause 将如下所示:

declare @number int
declare @operand varchar(2) = '>' --can be >, <, >=, <=

.....
WHERE amount` + operand + `@number`
.....

所以,结果片段将是WHERE amount &gt; @number

【问题讨论】:

标签: sql-server tsql


【解决方案1】:

只需使用这个

declare @number int = 4
declare @operand varchar(2) = '>' --can be >, <, >=, <=

exec('select * from TableName
WHERE amount  ' + @operand + ' ' + @number)

【讨论】:

    【解决方案2】:

    这使您可以进行 SQL 代码注入。此外,要连接一个 INT,您必须将其设置为 varchar,但在实际语句中它将评估为 INT。

    declare @number varchar(max) = '1'
    declare @operand varchar(2) = '>' --can be >, <, >=, <=
    declare @Where varchar(max)
    
    
    SET @Where = 'WHERE amount ' +  @operand + ' ' + @number
    
    SELECT @Where
    

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2021-12-09
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 2016-10-07
      • 1970-01-01
      相关资源
      最近更新 更多