私は、パラメータに基づいて文字列を作成する必要があるジレンマに直面しています。IN関数のMySQLストアドプロシージャケース
CASE gender_Case
WHEN CONCAT("1") THEN
SET @tempString = CONCAT('M');
WHEN CONCAT("2") THEN
SET @tempString = CONCAT('F');
ELSE
SET @tempString = CONCAT('M','F');
END CASE;
私が構築するつもりクエリは次のとおりです。ケース1と2については
SELECT @uid:=uid FROM search_optimized_table where country = country
and uid !=userId and TIMESTAMPDIFF(YEAR,DOB,CURDATE())
BETWEEN minAge and maxAge and gender IN (@tempString)
が正常に動作しています。 しかし、ケース1とケース2以外。ただ失敗します。
どのように修正するのですか?
シナリオ:
呼び出し側がケース1を受信すると、それは (M)における男女のためのクエリを作成します。しかし、私の問題では、ケース3は常に失敗します。
EDIT:
CASE gender_Case
WHEN CONCAT("1") THEN
SET @tempString = "M";
WHEN CONCAT("2") THEN
SET @tempString = "F";
ELSE
SET @tempString = "M,F";
END CASE;
第1および第2の上記の作品が、第三ません。
は今、私の第一、第二と第三の方法は、動作することはできません。 – FreedomPride
これを試してください。私は間違って最後に大文字小文字を追加しました。 –
も運がありません。しかしこれのための私のための第一と第二の仕事: '' '\tケース時gender_Case =" 1 "THEN SET @tempString =" M "; \t \t \t \t \t \t \t \t gender_Caseは= "2" THEN @tempString = "F" を設定した場合。 \t \t \t \t \t \t \t ELSE SET @tempString = "M、F"; \t \t \t \t \t \t end case; \t '' ' – FreedomPride