国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

SQL Server: Verwendung des CASE WHEN-Ausdrucks mit der WHERE-Klausel
P粉270842688
P粉270842688 2024-04-03 14:46:55
0
1
789

Ich habe ein neues Spring Boot-Projekt mit SQL Server und muss die nativen MySQL-Abfragen für die Repository-Methoden im alten Projekt durch native SQL Server-Abfragen ersetzen. Dies ist eine komplexe Abfrage, bei der die Bedingung ein Case-When-Ausdruck ist. Wenn ich versuche, die Abfrage in SQL Server Management Studio zu testen, wird der Fehler wie im Bild unten gezeigt angezeigt. Geben Sie hier eine Bildbeschreibung ein

Dies ist meine alte native Abfrage, die MySQL für die Repository-Methode verwendet, und ich m?chte sie durch SQL Server ersetzen Geben Sie hier eine Bildbeschreibung ein Bitte helfen Sie mir, eine L?sung zu finden. Vielen Dank im Voraus! !

P粉270842688
P粉270842688

Antworte allen(1)
P粉904191507

這就是您所擁有的內(nèi)容以及您應(yīng)該在問(wèn)題中以文本形式發(fā)布的內(nèi)容。作為文本,試圖幫助您的人可以搜索和復(fù)制它。

case when @num = 1 then p.merchant_name = @query else 1=1 end

CASE 是 TSQL 中的表達(dá)式。它不像許多其他語(yǔ)言那樣是一種流控制結(jié)構(gòu)。要使用“可選”過(guò)濾器,您需要使用 CASE 構(gòu)造一個(gè)布爾表達(dá)式來(lái)正確處理“可選”屬性。通常,使用 CASE 可以更復(fù)雜地完成此操作,如下所示:

case when @num = 1 and p.merchant_name  @query then 0 else 1 end = 1

所以這里使用CASE來(lái)返回一個(gè)可以在比較中測(cè)試的值。使用 0 或 1 并沒(méi)有什么魔力。使用任何類型的任何值。

  • 當(dāng) @num 為 1 并且值不匹配時(shí),返回 THEN 分支 (0)。
  • 當(dāng) @num 為 1 并且值匹配時(shí),返回 ELSE 分支 (1)。
  • 當(dāng) @num 不是 1 時(shí),返回 ELSE 分支 (1)。

因此,當(dāng) CASE 表達(dá)式返回 0(實(shí)際上不是 1)時(shí),該行將被忽略(從結(jié)果集中刪除)。

鑒于您的查詢實(shí)際上是在應(yīng)用程序中構(gòu)建的,您應(yīng)該考慮動(dòng)態(tài)構(gòu)建查詢并根據(jù)需要添加參數(shù)。這可能會(huì)生成更有效的查詢,數(shù)據(jù)庫(kù)引擎可以更好地優(yōu)化該查詢?;蛘?,您可以查看此廚房水槽討論和 Erland 的關(guān)于動(dòng)態(tài)搜索條件的討論。 TBH 看起來(lái)有人使用 @num 作為拼湊以避免為八個(gè)特定過(guò)濾器值添加參數(shù)。如果我想同時(shí)過(guò)濾商家名稱和商店名稱,則無(wú)法使用此方法。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage