Ich stehe vor einem Dilemma, wo ich eine Zeichenfolge basierend auf dem Parameter erstellen muss.MySQL Stored Procedure Fälle für IN Funktion
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;
Der Query Ich werde bauen:
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)
Für den Fall 1 und 2 funktioniert gut. Aber anders als Fall 1 und Fall 2. Es schlägt einfach fehl.
Irgendeine Idee, wie man es repariert?
Szenario:
Wenn Anrufer Fall 1 empfängt, wird es die Abfrage nach Geschlecht in (M) erstellen. Aber in meinem Fall schlägt Fall 3 immer fehl.
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;
Die erste und zweite Werke oben, aber nicht die dritte.
, nun mein 1., 2. und 3. Methode nicht funktionieren kann. – FreedomPride
versuchen Sie es jetzt, ich fälschlicherweise Fall nach Ende hinzugefügt; –
kein Glück auch. aber die erste und zweite Arbeit für mich dafür: '' '\t FALL WENN gender_Case =" 1 "DANN SET @tempString =" M "; \t \t \t \t \t \t \t \t WHEN gender_Case = "2" SET THEN @tempString = "F"; \t \t \t \t \t \t \t SONST SET @tempString = "M, F"; \t \t \t \t \t \t ENDKOFFER; \t '' ' – FreedomPride