ОК, это довольно простая проблема, но мне интересно: каков наилучший подход с точки зрения эффективности и стиля?
Мне часто нужно выбирать данные в MS SQL, но я ищу один результат.Если в базе данных нет совпадений, я бы хотел вернуть значение по умолчанию.
Вот несколько подходов, которые я использую:
Сделайте это в коде
--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
}
}
Гарантия возвращаемого значения в 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());
Есть ли более элегантный способ сделать это?Или более эффективный способ?
Если нет, то какую из них вы бы посчитали лучшей практикой?