Birinin yardım edebileceğini umuyorum. İlk depolanmış prodüksiyonumu (hiçbir şey fantezi değil) oluşturdum, ancak bir sorunla karşılaşıyorum.MYSQL - Saklı Prosedür Değişken Giriş Olarak Virgülle Ayrılmış Dize Kullanan
ben o 1,2,3,4,5 o zaman basit bir SELECT * FROM [TABLE] WHERE EAN IN (VAR);
Yani saklı proc şöyle yapar gibi bir dize girişi vermek istiyorum:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE PROCEDURE `moments`.`new_procedure`(IN var1 VARCHAR(255))
BEGIN
SELECT * FROM moments.PRODUCT WHERE EAN IN (var1);
END
Im am böyle gibi yürütülmeye çalışılırken:
İşleri
call moments.new_procedure('5045318357397')
call moments.new_procedure('5045318357397,5045318357427');
Çalışmıyor Bu ancak herhangi bir sonuç geri getirmeyecek doesnt yürütür.
select * from moments.PRODUCT WHERE EAN IN ('5045318357397,5045318357427')
değil bu: onun bunu böylece bir dize olarak ikinci ifadeyi classing mı
select * from moments.PRODUCT WHERE EAN IN ('5045318357397','5045318357427')
Nasıl bir alması için yürütmek sorguda biçiminde giriş gerekiyor virgül bir giriş olarak dize ayrılmış? Sen kullanabilirsiniz
PREPARE stmt1 FROM CONCAT('select * from moments.PRODUCT WHERE EAN IN (',var1,')');
EXECUTE stmt1;
Bu, saklanan programın içinde mükemmel çalışır, teşekkürler. Bu ayrıca, bir ek bonus olan Cast Iron uygulamasından nasıl bahsedeceğim. – MMKD
bu çalışır, ancak masadaki tüm satırları getirmesi gerektiğinden, her satırın setinize göre karşılaştırılması gerektiğinden çok etkili değildir, bu da eşleşip eşleşmediğini kontrol etmek için virgülle ayrılmış listeden geçmelidir. sütunların sayısı düşük, o zaman aksi takdirde bir meyilli yol bulmak gerekir – Populus
@Populus yorum sökülmelidir daha fazla - FIND_IN_SET herhangi bir tablo endeksleri kullanmaz, bu yüzden eğer bu şekilde kullanılırsa büyük bir performans problemi –