当前位置:数据库 > SQLServer >>

SQL描述(1)

SQL描述(1)
 
这个标题源于大学的一个老师,他说SQL语句可以描述很多东西,而这种能力就叫做SQL描述。我真的信了,我百度了,google了,关于我想的那种解释半点都没。
我记错了?不过这说法还是很不错的,近来做项目,越来越感觉到SQL的强大。我用的是ORACLE,其他数据库接触的不多。先说几个有趣的例子。
 
1    有限自然数序列
[sql] 
select LEVEL N from dual CONNECT BY LEVEL <=122  
level 据说是个伪列,connect by 类似与 for 循环中的 循环变量 

2  无限自然数序列
[sql] 
select LEVEL N from dual CONNECT BY 1=1  

 

判断永远成立,就是无限循环
 
3   斐波那契数列
[sql] 
with G as (select LEVEL N from dual CONNECT BY LEVEL <=122),  
     M as (select n,case when n=1 then 0 when n=2 then 1 else null end as v from g)  
     select n,v from m   
     model  dimension by (n)  
     measures (v)  
     (  
        v[n>2]=v[cv(n)-1]+v[cv(n)-2]  
     )  

 

with 将后面的查询结果集表示为一个表,可以用 逗号 隔开 支持多个结果集表,但最后的针对表的查询后面不用逗号。最后的查询要将前面定义的所有表都使用了,不然报错。
model 子句可以用来进行行间计算,dimension by 定义一个维度,可以理解为数组的下标,measures 定义一个度量,可以理解为数组某个下标对应的值,即数组的值。
cv()可以将dimension by 定义维度转换为类似于 for 循环中的 i。measures中的公式 左边可以直接使用纬度进行判断 公式右边需要使用cv,才可以像操作for循环中的元素 一样
操作度量中的值
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,