HiSql 实现case语法操作 新一代无实体ORM框架
HiSql 实现case语法操作
在SqlServer,Oralce,Hana,PostGreSql,MySql 这些数据都支持SQL case语法,平常在实现业务开发中也会常用到,那么HiSql对于case语法也提供了比较便捷的写法,HiSql将会自动适配不同的数据库,开发人员不用管具体哪一种的SQL语法。
这是HiSql样例写法代码
HiSql提供的语法只要开发人员本身对SQL有一定的基础,基本上上手都比较容易
string _sql=sqlClient.Query("Hi_TabModel").Field("TabName as tabname").
Case("TabStatus")
.When("TabStatus>1").Then("'启用'")
.When("0").Then("'未激活'")
.Else("'未启用'")
.EndAs("Tabs", typeof(string))
.Field("IsSys")
.ToSql()
;
When方法中的字条件语法 (HiSql支持的库都是以下同样的写法)
- When("TabStatus>1") 支持的操作符 >,<,>=,<=,!=,<> 如果操作符不在此列HiSql将会检测语法错误
- 当是字段是字符串时 值加下加单引号如 When("TabName='TabName'")
- 当然也可以这样写 .When("0") 这里的意思与 When("TabStatus=0")
注意事项
- 当出现语法错误时HiSql会自动检测并报出错误异常
- Case语法不支持嵌套Case语法(日常使用这样会有性能问题)
HiSql生成的原生SqlServer 代码
select [Hi_TabModel].[TabName] as [tabname],case
when [TabStatus] > 1 then '启用'
when [TabStatus] = 0 then '未激活'
else '未启用'
end as [Tabs]
,[Hi_TabModel].[IsSys] from [Hi_TabModel] as [Hi_TabModel]
HiSql生成的原生MySql 代码
select `Hi_TabModel`.`TabName` as `tabname`,case
when `TabStatus` > 1 then '启用'
when `TabStatus` = 0 then '未激活'
else '未启用'
end as `Tabs`
,`Hi_TabModel`.`IsSys` from `Hi_TabModel` as `Hi_TabModel`
HiSql生成的原生HANA 代码
SELECT "HI_TABMODEL"."TABNAME" AS "TABNAME",CASE
WHEN "TABSTATUS" > 1 THEN '启用'
WHEN "TABSTATUS" = 0 THEN '未激活'
ELSE '未启用'
END AS "TABS"
,"HI_TABMODEL"."ISSYS" FROM "HONEBI"."HI_TABMODEL" AS "HI_TABMODEL"
HiSql生成的原生ORACLE 代码
SELECT HI_TABMODEL."TABNAME" AS "TABNAME",CASE
WHEN "TABSTATUS" > 1 THEN '启用'
WHEN "TABSTATUS" = 0 THEN '未激活'
ELSE '未启用'
END AS "TABS"
,HI_TABMODEL."ISSYS" FROM HI_TABMODEL HI_TABMODEL
HiSql生成的原生PostGreSql 代码
select "Hi_TabModel"."TabName" as "tabname",case
when "TabStatus" > 1 then '启用'
when "TabStatus" = 0 then '未激活'
else '未启用'
end as "Tabs"
,"Hi_TabModel"."IsSys" from "Hi_TabModel" as "Hi_TabModel"
HiSql 实现case语法操作 新一代无实体ORM框架的更多相关文章
- hisql 新一代无实体ORM使用第一步 hisql安装使用
安装 github hisql 最新源码下载 也可以通过nuget安装 注意:HiSql仅支持.net5或以上环境 选择您需要支持的数据库对应的支持包进行安装 本例使用sqlserver进行演示,请安 ...
- case语法练习脚本之判断
case语法练习脚本之判断 #!/bin/bash read -p "请输入一个字符,并按enter键确认:" key case "$key" in [a-z] ...
- bash 中的case语法
CASE语法格式备忘 case $variable-name in pattern1) command1 ... .... commandN ;; pattern2|pattern3|pattern4 ...
- 【mybatis】mybatis查询 结果 用map接收,无实体接收 + 关联子表 一并返回主子表的结果
如果后台程序没有实体对应mysql的数据表. 而mybatis想要查询mysql这个数据表的数据,返回给应用程序. 应用程序该如何接收? =============================== ...
- Shell case语法结构解析
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 ...
- Verilog RTL优化策略(一):推荐使用assign语法替代if-else和case语法
参考 <手把手教你设计CPU--RISC-V处理器篇> 先给出不用if-else和case的原因 Verilog中的if-else和case语法存在两大缺点: 不能传播不定态X: 会产生优 ...
- hisql ORM 框架研究(国内第一个支持HANA的ORM框架)
HiSql 操作说明文档 V1.0 下一代ORM框架 国内第一个支持HANA的ORM框架 hisql源码下载 git clone https://github.com/tansar/HiSql.git ...
- .NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
一.引言 上一篇.NET ORM框架HiSql实战-第一章-集成HiSql 已经完成了Hisql的引入,本节就把 项目中的菜单管理改成hisql的方式实现. 菜单管理界面如图: 二.修改增删改查相关代 ...
- ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.5
摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.N ...
随机推荐
- Copy elision in C++
Copy elision (or Copy omission) is a compiler optimization technique that avoids unnecessary copying ...
- Why is the size of an empty class not zero in C++?
Predict the output of the following program? 1 #include<iostream> 2 using namespace std; 3 4 c ...
- 【报错记录】Could not load dynamic library 'libnvinfer.so.6'; dlerror: libnvinfer.so.6
执行import tensorflow的时候有如下报错 (test1) a@10980:~$ python Python 3.6.13 |Anaconda, Inc.| (default, Jun 4 ...
- git push大文件失败(write error: Broken pipe)完美解决
问题 在使用git push推送大文件(超过了100MB)到GitHub远程仓库时提示异常,异常信息如下: fatal: sha1 file '<stdout>' write error: ...
- shell脚本 awk实现查看ip连接数
一.简介 处理文本,是awk的强项了. 无论性能已经速度都是让人惊叹! 二.使用 适用:centos6+ 语言:英文 注意:无 awk 'BEGIN{ while("netstat -an& ...
- 微信浏览器打开H5页面右上角隐藏转发功能
js设置转发开关 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge. ...
- php常用的数组排序函数
sort() 函数用于对数组单元从低到高进行排序.rsort() 函数用于对数组单元从高到低进行排序.asort() 函数用于对数组单元从低到高进行排序并保持索引关系.arsort() 函数用于对数组 ...
- Arduino对智能机器人进行简单编程
Arduino对智能机器人进行简单编程 #include "ESP8266.h" #define TRIG_PIN 5 #define ECHO_PIN A5 #define BE ...
- AT5341 [ABC156D] Bouquet 题解
Content 有一个人有 \(n\) 种不同的话可供选择,TA 可以选择至少一种花做花束,但是 TA 不喜欢花的种数为 \(a\) 或者 \(b\) 的花束.求选花的方案数对 \(10^9+7\) ...
- CF1514A Perfectly Imperfect Array 题解
Content 给定一个长度为 \(n\) 的序列,问是否存在一个非空子序列,使得这个子序列所有元素的积不是完全平方数. 数据范围:\(t\) 组数据,\(1\leqslant t\leqslant ...