3

我有一个位列NonMileage,基于该位列,我想创建一个可以在 where 子句中使用的变量。

这是一个两部分的问题:

  1. 你如何区分一个变量?下面的代码不区分@NoMileageListing
  2. 然后我将@MileListingClause 设置为字符串,我可以像@MileListingClause 一样使用@MileListingClause 吗?

.

SET @NoMileageListing = (SELECT NonMileage FROM tbldealerships);
SELECT 
    @NoMileageListing CASE @NoMileageListing when 1 then 
        SET @MileListingClause = 'tblcargarage.miles >= 0' else 
        SET @MileListingClause = 'tblcargarage.miles != 0' end case;

这是答案

SET @NoMileageListing = (SELECT NonMileage FROM tbldealerships);

SELECT CASE @NoMileageListing
          WHEN 1 THEN 'tblcargarage.miles >= 0'
          ELSE 'tblcargarage.miles != 0'
       END
  INTO @NoMileWhereClause;
  select @NoMileWhereClause;

在这里找到: Mysql 使用 SELECT CASE 的结果存储变量

4

1 回答 1

2

我认为问题出在 when 部分。它应该是:

SELECT CASE @NoMileageListing
WHEN @NoMileageListing = 1 THEN 'tblcargarage.miles >= 0'
ELSE 'tblcargarage.miles != 0'
END
INTO @NoMileWhereClause;
select @NoMileWhereClause;

要使用 @noMileWhereClause 创建动态查询,请参阅此处的答案: 如何在 MySQL 存储过程中使用动态 SQL

于 2013-06-03T13:59:39.443 回答