网站首页 > 技术文章 正文
概述
Model语句是Oracle 10g的新功能之一。下面主要通过一些简单的例子来帮助大家理解Model语句的用法。
以下基于Oracle11.2.0.4测试。
01
什么是model语句
model语句是Oracle10g的新功能,可以在select语句里面像其他编程语言操作数组一样,对SQL的结果集进行处理。执行顺序是位于Having之后。
select的解析执行顺序
1. from语句 2. where语句 (结合条件) 3. start with语句 4. connect by语句 5. where语句 6. group by语句 7. having语句 8. model语句 9. select语句 10. union、minus、intersect等集合演算演算 11. order by语句
model的好处
Oracle 9i为止,需要使用各种计算分析函数,union all等,以及借助其他开发语言(C#及Java等)进行复杂计算统计合并等。使用Model之后,这些都可以在SQL里面进行了。
model典型使用场景:
合计行追加 行列变换 使用当前行的前后行 RegExp_Replace函数的循环执行
02
HelloWorld
1、例子1:
select ArrValue,soeji from (select 'abcdefghijklmn' as ArrValue, 1 as soeji from dual) model dimension by(soeji) measures(ArrValue) rules(ArrValue[1] = 'Hello World');
结果:
说明:
model model语句的关键字,必须。 dimension by dimension维度的意思,可以理解为数组的索引,必须。 measures 指定作为数组的列 rules 对数组进行各种操作的描述。
根据下面语句model dimension by (soeji) measures(ArrValue) soeji作为索引对数组ArrValue进行操作,rules(ArrValue[1] = 'Hello World')就是说用Hello World覆盖ArrValue[1]里面的值。
2、例子2
select ArrValue,soeji from (select 'abcdefghijklmn' as ArrValue, 1 as soeji from dual) model dimension by(soeji) measures(ArrValue) rules(ArrValue[1] = 'Hello World', ArrValue[2] = 'Hello model');
执行结果:
rules的缺省行为是存在就更新,不存在则追加,因此,ArrValue[1] = 'Hello World'是更新一条,ArrValue[2] = 'Hello Model'insert一条。
3、例子3:
select ArrValue,soeji from (select 'abcdefghijklmn' as ArrValue, 1 as soeji from dual) model dimension by(soeji) measures(ArrValue) rules(ArrValue[3] = 'Hello ORACLE');
model语句里面,索引可以是不连续的。
4、例子4
select ArrValue,soeji from (select 'abcdefghijklmn' as ArrValue, 1 as soeji from dual) model dimension by(soeji) measures(ArrValue) rules(ArrValue[4] = 'Hello HWB');
使用model return updated rows的话,被rules更新或者插入的行才显示,没有更新过的行不再作为SQL的结果。
篇幅有限,这里主要简单介绍一下model的用法,大家感兴趣的话建议做一下相关实验深入了解下。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
- 上一篇: 超详细的5个Oracle数据库分组函数总结
- 下一篇: Oracle函数 Oracle函数怎么调用
猜你喜欢
- 2024-10-20 1 小时 SQL 极速入门(三)——分析函数
- 2024-10-20 oracle中常用的一些函数,巧用函数,减少代码量
- 2024-10-20 Oracle常用系统函数-日期和时间类函数
- 2024-10-20 oracle 函数decode用法 oracle的decode方法
- 2024-10-20 数据库笔试面试5——在Oracle中,函数的描述正确的是
- 2024-10-20 ORACLE 取两张表差值函数 minus oracle查询两个表中相同数据
- 2024-10-20 Oracle行转列、列转行函数 oracle12c行转列函数
- 2024-10-20 用ORACLE分析函数decode实现行列转换
- 2024-10-20 2周零基础搞定SQL——窗口函数 sql 窗口函数执行顺序
- 2024-10-20 Oracle数据库中几种非常有用的函数(with……as等)
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)