sql server笔记一

一、百钱买百鸡问题

现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只
要求:公鸡、母鸡,小鸡都要有,把100文钱花完,
买的鸡的数量正好是100。
问:一共能买多少只公鸡,多少只母鸡,多少只小鸡?

declare @xiaoji int;
declare @gongji int;
declare @muji int;
set @xiaoji=0;
set @gongji=0;
set @muji=0;
while @gongji<20
begin
	while @muji<33
	begin
		set @xiaoji=100-@gongji-@muji
		if (@gongji*15+@muji*9+@xiaoji)=300
		begin
		print 'xiaoji:'+cast(@xiaoji as varchar)+'  gongji:'+cast(@gongji as varchar)+'  muji:'+cast(@muji as varchar)
		end
	set @muji=@muji+1
	end
set @muji=1
set @gongji=@gongji+1
end
二、排序

要求:自定义存储过程

create procedure test @str varchar(100)
as
begin
declare @i int,@tmp varchar(100),@a int,@b varchar(100),@c int,@d int,@e varchar(100)
set @i=charindex(',',@str) --第一个逗号位置
set @tmp=substring(@str,0,@i) --截取逗号前面的字符
set @a=len(replace(@str,',','--'))-len(@str)+1 --统计总共有多少个数
--开始可以新建一个表
set @b=replace(@str,@tmp+',','')
--set @b=substring(@b,@i+1,len(@b)-len(@tmp))
--print @b
set @c=1
while @a>0
	begin
	set @e= '第'+cast(@c as varchar)+'个数'
	set @d= cast(@tmp as int)
	INSERT INTO [dbo].[paixu]
           ([列名]
			,[数值])
	VALUES
		(@e,@d)
	set @i=charindex(',',@b)
	if @i=0
		begin
		set @tmp=@b
		end
	else
		begin
		set @tmp=substring(@b,0,@i) --截取逗号前面的字符
		end
	set @b=substring(@b,@i+1,len(@b)-len(@tmp))
	set @c=@c+1
	set @a=@a-1
	end
select * from [tete].[dbo].[paixu] order by [数值];
delete from [tete].[dbo].[paixu]
end
test @str='34,456,23,88,62'

在这里插入图片描述
有bug。。如果有重复的数,就会出现问题。。。就这样吧。。之后有时间再看看哪里出了问题,再把这行字删了。。
问题:代码太长,应该是不能用orderby,难点在于在sql中创建出类似数组的结构,再用常用方法,类似冒泡进行排序。。。之后再改吧。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值