[MS-SQL] IF-Funktion ähnl. MySQL?

ManicMarble

Erfahrenes Mitglied
Hallo DB-Experten

Jetzt bin ich in den letzten Jahren doch recht fit in MySQL geworden (bilde ich mir ein), da muss ich mich auf einmal mit dem MS-SQL-Server rumquälen :(. Oh mann, wie ist die MySQL-Syntax doch toll. Ich kämpfe mich durch alle MS-Dokus, aber bei einer Sache komme ich nicht klar. In MySQL sähe das z.B. so aus:
Code:
SELECT IF(`feld` >= 'wert', 'Drüber', 'Drunter') FROM `tabelle`
In MS-SQL's "Transact-SQL" gibt's wohl keine so praktische IF-Funktion, zumindest keine "integrierte". Und eine SQL-FUNCTION will ich eigentlich nicht erstellen, die DB gehört zu einer Fremd-Software, da will ich eigentlich nur gucken, nix kreieren.

Es gibt wohl schon ein IF...ELSE...-Konstrukt, laut MSDN-Doku kann man das auch in "Ad-hoc-Statements" verwenden - aber ich bin zu MySQL-verwöhnt, ich kann's nicht.

Bin für jede Hilfe dankbar,
Martin
 
Hi

also in Access geht das über die iif() Funktion mit dem SQL-Server über case - when

bsp. von mir
Code:
create view v_best as 
select b.bestnr, 
       p.position, 
       p.artnr, 
       a.beschreibung, 
       p.menge, 
       a.me, 
       b.kdnr, 
       k.kundengruppe, 
       b.bestdatum, 
       case when k.kundengruppe = 'Ap' then p.menge else 0 end kg_ap, 
       case when k.kundengruppe = 'Bp' then p.menge else 0 end kg_bp, 
       case when k.kundengruppe = 'Cp' then p.menge else 0 end kg_cp, 
       case when k.kundengruppe = 'Ag' then p.menge else 0 end kg_ag, 
       case when k.kundengruppe = 'Bg' then p.menge else 0 end kg_bg, 
       case when k.kundengruppe = 'Cg' then p.menge else 0 end kg_cg 
  FROM t_bestellungen b, t_bestellpos p, t_kunden k, t_artikel a 
 WHERE b.bestnr = p.bestnr AND 
       b.kdnr = k.kdnr AND 
       a.artnr = p.artnr

Viell. hilts Dir weiter.
 
Hi Luzie
Super klasse! :) Dass es CASE auch in MS-SQL gibt - da bin ich mal wieder nicht drauf gekommen, hab' die Doku nur nach IF durchwühlt wie ein Gestörter.

Bin jetzt erst mal wieder happy, vielen Dank,
Martin

(Obwohl: ein Problem hätt ich noch, betrifft Zeichensätze, Umlaute, verschiedene Client-Plattformen und so - aber dafür mach' ich dann zu gegebener Zeit einen eigenen Thread auf.)
 
ManicMarble hat gesagt.:
Jetzt bin ich in den letzten Jahren doch recht fit in MySQL geworden (bilde ich mir ein),
Kann ich nur bestätigen, hab schon den einen oder anderen wertvollen Tipp von Dir anwenden können ;)

ManicMarble hat gesagt.:
da muss ich mich auf einmal mit dem MS-SQL-Server rumquälen :(.
keine Panik, wirst sehen, das Teil kann richtig Spass machen.
Ich habe vor ein paar Jahren mal einen Lehrgang auf dem SQL-Server absolviert und erst heute kann ich ihn wirklich anwenden. Total spannend!
Leider sind sp und trigger immer noch eine Herausforderung für mich, aber werde ich auch noch checken :D und Du auch, bin ich mir sicher :D
 
Danke für die Blunem :)

Mit dem MS-SQL weiß ich aber noch nicht so recht. Bei uns ist sonst eigentlich alles MySQL (und das mit mehr als nur Web- und Intranet-Apps). Mit dem MS-SQL musste ich nur mal eben ein paar Auswertungen fabrizieren. Allerdings erweitert es schon den Horizont, wenn sich mal wieder mit anderen DBM-Systemen befassen muss.

Ich geh' jetzt jedenfalls erst mal 3 Wochen in Urlaub und danach kümmere ich mich um die verflixten MS-SQL-Umlaute...

Grüße,
Martin

Edit/PS: Gibt's oder gab's eigentlich hier bei Tutorials irgendwo schon mal 'ne Grundsatzdiskussion über Trigger im Allgemeinen und im Besonderen? Würde mich mal interessieren. Ich mag die Dinger nämlich nicht, das Konzept finde ich irgendwie "unfein".
 
Zuletzt bearbeitet:
ManicMarble hat gesagt.:
Danke für die Blunem :)

Mit dem MS-SQL weiß ich aber noch nicht so recht. Bei uns ist sonst eigentlich alles MySQL (und das mit mehr als nur Web- und Intranet-Apps). Mit dem MS-SQL musste ich nur mal eben ein paar Auswertungen fabrizieren. Allerdings erweitert es schon den Horizont, wenn sich mal wieder mit anderen DBM-Systemen befassen muss.

Ich geh' jetzt jedenfalls erst mal 3 Wochen in Urlaub und danach kümmere ich mich um die verflixten MS-SQL-Umlaute...

Grüße,
Martin

Edit/PS: Gibt's oder gab's eigentlich hier bei Tutorials irgendwo schon mal 'ne Grundsatzdiskussion über Trigger im Allgemeinen und im Besonderen? Würde mich mal interessieren. Ich mag die Dinger nämlich nicht, das Konzept finde ich irgendwie "unfein".

Hi

na dann, schönen Urlaub.

Ob hier mal eine Grundsatzdiskussion lief, kann ich nicht sagen, kann aber gut sein.
Ich habe nur mal kurz in die Trigger-Anwendung hineingeschaut, bin aber davon überzeugt, dass sie, wenn sie sinnvoll angewandt werden, durchaus einiges an Programmierung ersparen.

Ich kann derzeitig wenig dazu sagen. Ein Beispiel wäre eine Lagerverwaltung in einem Webshop. Über einen Trigger könnte man das Reallager minus der Warenkorbmenge in einer TempLagerspalte festlegen. So ein Trigger könnte auf der Warenkorbtabelle laufen. Das macht meiner Meinung nach schon irgendwie Sinn.

Ich bin allerdings auch noch nicht routiniert, was Trigger angeht, aber ich werde sie mit Sicherheit einsetzen, wenn es mir Sinn macht.
 
Ja, also wenn ich wieder da bin, dann werd' ich vielleicht mal so 'ne Diskussion anstoßen. Was die Trigger so machen und wie das im Groben geht ist mir schon klar. Wo ich meine Bedenken habe ist, dass da dann (salopp ausgedrückt) Sachen in der DB "wie von Geisterhand" geändert werden, ohne dass sie im Code der Anwendung programmiert sind. Ich denke, das kann schnell zu ziemlich undurchsichtigen Programmabläufen führen, ein Debuggen wird wohl bei massiver Trigger-Nutzung richtig heftig.

Wäre sicher interessant mit Leuten zu "reden", die selbst viel mit Triggern machen. Aber wie gesagt, diese Diskussion führe ich ein ander mal.

SPs sind natürlich was richtig tolles, keine Frage. Hab ich schon mit PostgreSQL verwendet und freu' mich deshalb auf ein stabiles MySQL 5...

Bis dann,
Martin
 

Neue Beiträge

Zurück