我有以下包含列名的字符串:
string colsToSelect;
此字符串包含列名称(例如:col1 + col2 + col3 + col4 + col5或col1 + col3),在这些列中有数值。
我使用它来从数据库中获取所有这些列的总数。
SELECT " + colsToSelect + " AS totalVolume " + "FROM myTable
但是我需要为每个列添加nvl(col1,0),因为这些列可能包含null。
我这样做了:
colsToSelect = colsToSelect.Replace("+", "+nvl(");
colsToSelect = colsToSelect.Replace("+", ",0)+");
colsToSelect = "nvl(" + colsToSelect;
colsToSelect = colsToSelect + ",0)";
这给了我nvl(col1, 0) + nvl(col2, 0)
等等。但是我想知道是否有更好的方法来实现这一点,可能使用LINQ或者使用sql?
答案 0 :(得分:2)
您可以再次使用string.Split
,再使用string.Join
:
colsToSelect = string.Join("+",
colsToSelect.Split('+')
.Select(x => string.Format("nvl({0}, 0)", x)));