3

私が持っているのはビット列NonMileageで、そのビット列に基づいて、where 句内で使用できる変数を作成したいと考えています。

これは 2 つの部分からなる質問です。

  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 に答える