lambdicSql - CASE式に対応しました -
LabdicSql_α0.0.39をリリースしました。CASEに対応しています。
www.nuget.org
迷いましたがWHENとTHENはC#上ではWhenThenで書くようにしました。それからENDは書かなくても良いようにしました。
SELECT句への合成はサブクエリと同じ書き方で書くようにしました。
検索ケース式
[TestMethod] public void Case1() { var query = Db<DB>.Sql(db => Select(new SelectedData() { Type = Case(). When(db.tbl_staff.id == 3).Then("x"). When(db.tbl_staff.id == 4).Then("y"). Else("z"). End() }). From(db.tbl_staff)); //文字列化 Debug.Print(query.Build(typeof(SqlConnection)).Text); //Dapperを使っているなら、以下のように実行できます var datas = _connection.Query(query).ToList(); }
SQLです。ちょっと頑張って綺麗にタブが入るようにしました。この改善でサブクエリにも同様に改善されています。
SELECT CASE WHEN (tbl_staff.id) = (@p_0) THEN @p_1 WHEN (tbl_staff.id) = (@p_2) THEN @p_3 ELSE @p_4 END AS Type FROM tbl_staff
単純ケース式
public void Case2() { var query = Db<DB>.Sql(db => Select(new SelectedData() { Type = Case(db.tbl_staff.id). When(3).Then("x"). When(4).Then("y"). Else("z"). End() }). From(db.tbl_staff)); //文字列化 Debug.Print(query.Build(typeof(SqlConnection)).Text); //Dapperを使っているなら、以下のように実行できます var datas = _connection.Query(query).ToList(); }
SELECT CASE tbl_staff.id WHEN @p_0 THEN @p_1 WHEN @p_2 THEN @p_3 ELSE @p_4 END AS Type FROM tbl_staff
履歴
2016/09/02 β版対応