OK, das ist ein ziemlich einfaches Problem, aber ich bin neugierig: Was ist der beste Ansatz in Bezug auf Effizienz und Stil?Effizienter Weg, den Standardwert in t-sql zu wählen, wenn keine Ergebnisse gefunden werden
Ich muss oft Daten in MS SQL auswählen, aber bin auf der Suche nach einem einzigen Ergebnis. Wenn in der Datenbank keine Übereinstimmung vorhanden ist, möchte ich einen Standardwert zurückgeben.
Hier sind ein paar Ansätze, die ich nehmen:
Tun Sie es in der Code
--Regular Select in SQL
SELECT myValue FROM dbo.SomeTable WHERE id = @id
//In Data Access Layer
using (IDataReader reader = cmd.ExecuteReader()) {
if (reader.Read()) {
return Convert.ToInt32(reader["myValue"]);
}else {
return 0; //return a default
}
}
Garantie einen Rückgabewert in SQL
--SQL stores in a variable and selects null value if available
declare @myVal int
select @myVal = myValue FROM dbo.SomeTable WHERE id = @id
--return value or a default
select ISNULL(@myVal,0) as myValue
//In Data Access Layer
return Convert.ToInt32(cmd.ExecuteScalar());
Gibt es eine elegantere Möglichkeit um dies zu tun? Oder ein effizienterer Weg?
Wenn nicht, welche von diesen würden Sie als eine bessere Praxis betrachten?
Als allgemeine Regel würde ich sagen, dass der Standard in SQL zurückgegeben werden sollte, wenn Sie erwarten, dass alle anderen Systeme auf das Vorhandensein des Standards angewiesen sind. Wenn Sie nicht der Meinung sind, dass die meisten anderen Systeme in die eine oder andere Richtung gehen, sollte der Standard in der Client-App angewendet werden. Ich fürchte, ich kann nichts Genaueres anbieten, da ich mit TSQL nicht so gut bin. – FrustratedWithFormsDesigner