实现杨辉三角
发布时间:2020-12-11 23:15:33 所属栏目:MySql教程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 CREATE proc #pr_YangHui@c intas /* SQL实现显示杨辉三角 */ /* 版本: 1.0 */ /* 作者: Haiwer */ /* 版权所有 */ /* 2006.05.10 */set nocount onif
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 CREATE proc #pr_YangHui @c int as /* SQL实现显示杨辉三角 */ /* 版本: 1.0 */ /* 作者: Haiwer */ /* 版权所有 */ /* 2006.05.10 */ set nocount on if @c<2 return --两层以下就不排了 declare @i int declare @j int declare @sql varchar(8000) declare @sql1 varchar(8000) declare @sql2 varchar(8000) create table #(id int IDENTITY(1,1),a50000 bigint) insert #(a50000) values (1) --第一层 set @i=2 while @i<[email?protected] begin --为了实现动态层,只好动态修改临时表结构 set @sql='alter table # add a'+cast([email?protected] as varchar(10))+' bigint,a'+cast([email?protected]+1 as varchar(10))+' bigint' exec (@sql) set @sql1='' set @sql2='' set @[email?protected] while @j>=0 begin --这里判断有点乱 if @j=0 set @[email?protected]+',a'+cast([email?protected] as varchar(10)) else set @[email?protected]+',a'+cast([email?protected] as varchar(10))+',a'+cast([email?protected] as varchar(10)) if @[email?protected] set @[email?protected]+',1,1' else if @j=0 set @[email?protected]+',a'+cast([email?protected] as varchar(10))+'+a'+cast([email?protected]+1 as varchar(10)) else set @[email?protected]+',a'+cast([email?protected] as varchar(10))+'+a'+cast([email?protected]+1 as varchar(10))+',a'+cast([email?protected] as varchar(10))+'+a'+cast([email?protected]+1 as varchar(10)) set @[email?protected] end --去掉多余的逗号 set @sql1=right(@sql1,len(@sql1)-1) set @sql2=right(@sql2,len(@sql2)-1) set @sql=cast(@i-1 as varchar(10)) exec('insert #('[email?protected]+') select '[email?protected]+' from # where id='[email?protected]) set @[email?protected]+1 end set @[email?protected]+1 set @[email?protected] set @sql='' --去最长的数据,就是为了节省显示空间 select @sql1=CAST(len(cast(max(a50000) as varchar(50)))+1 AS VARCHAR(10)) from # while @i<[email?protected] begin set @[email?protected]+',isnull(cast(a'+cast(@i as varchar(10))+' as varchar('[email?protected]+')),'''')' set @[email?protected]+1 end exec ('select id'[email?protected]+' from # order by id') drop table # GO --调用 exec #pr_YangHui 8 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Mysql应用使用MySQL MySqldump命令导出数据时的注意事项
- Mysql学习解读mysql主从配置及其原理分析(Master-Slave)
- mysql-外连接加入UNION版本的表
- MYSQL教程mysql三种批量增加的性能分析
- MYSQL创建表出错Tablespace for table XXX exists. Please
- Mysql实例CentOS 6.6 源码编译安装MySQL 5.7.18教程详解
- 表的字段名转为逗号相隔的字符串
- mysql – 选择*数学运算
- Mysql必读详解远程连接Mysql数据库的问题(ERROR 2003 (HY00
- Mysql实例详解Mysql中的JSON系列操作函数