2017-06-29 1 views
0

Ich möchte eine SQL-Abfrage mit mehreren wie mit Case-Anweisung erstellen. Hier ist meine SQL-Abfrage. Case-Anweisung wird verwendet, um sicherzustellen, ist diese Anfrage von der Website oder Mobile, wenn die Anfrage von der Website ist, dann Case-Anweisung wird andere weise keine Notwendigkeit. HierMehrere wie mit Where-Klausel in SQL Server

ist Likes:

i.ItemNumber like '%-NLA' or 
i.ItemNumber like '%-NLA DEL' or 
i.ItemNumber like '%-NLAmod' 

Bitte helfen Sie mir.

select count(p.SkuID) as Total from Product p (nolock) 
join items i (nolock) on p.SkuID = i.SkuID 
join #TempProductLine pl (nolock) on i.ProductLineID = pl.ProductLineID where p.ProductID = @ParentId and i.IsSelling = 1 and 
case when @IsWebSite = 1 then 
    PATINDEX ('%-NLA DEL',i.ItemNumber) 
end = 0 
+0

Das sieht für mich wie SQL Server aus, aber Sie haben mit 2 anderen Datenbanken getaggt. Bitte entfernen Sie die irrelevanten Tags. –

+0

Ich habe sie alle entfernt. Fügen Sie ein Tag zurück, das für die verwendeten dbms. – jarlh

Antwort

0

Vielleicht würde die Verwendung von SIMILAR TO funktionieren?

SELECT * from table WHERE column SIMILAR TO '(AAA|BBB|CCC)%'; 

es so kombinieren wie i.ItemNumber SIMILAR TO '%(-NLA|-NLA DEL|-NLAmod)';

einige andere Dinge, die Sie ausprobieren möchten:

LIKE ANY(ARRAY['%-NLA','%-NLA DEL','%-NLAmod']) 
+0

Ich habe auch versucht, dieses Ding funktioniert nicht. Danke @Aakash Verma –

+0

Ich würde vorschlagen, die Zeichenfolge nach SIMILAR TO zu manipulieren. –

0

versuchen Sie dies:

select count(p.SkuID) as Total from Product p (nolock) 
join items i (nolock) on p.SkuID = i.SkuID 
join #TempProductLine pl (nolock) on i.ProductLineID = pl.ProductLineID where 
p.ProductID = @ParentId and i.IsSelling = 1 and 
i.ItemNumber like '%' + 
case 
when @IsWebSite = 1 then '-NLA' 
when @IsWebSite = 2 then '-NLA DEL' 
when @IsWebSite = 3 then '-NLAmod' 
else '' end 

oder einfach so:

select count(p.SkuID) as Total from Product p (nolock) 
join items i (nolock) on p.SkuID = i.SkuID 
join #TempProductLine pl (nolock) on i.ProductLineID = pl.ProductLineID where 
p.ProductID = @ParentId and i.IsSelling = 1 and 
(
@IsWebSite = 1 and i.ItemNumber like '%-NLA' or 
@IsWebSite = 2 and i.ItemNumber like '%-NLA DEL' or 
@IsWebSite = 3 and i.ItemNumber like '%-NLAmod' 
) 
+0

Es erfüllt meine Anforderung nicht voll. So jetzt ich weiter mit Dynamic SQL-Abfrage. Ich habe ** @ IsWebSite Bit ** Typ, so dass es nicht 1,2 und 3 sein kann. –

+0

AND? Ändern Sie meine Abfrage i Geben Sie ein Beispiel ... Oder erklären Sie Ihre Daten vor und nach;) – Esperento57

Verwandte Themen