一个小样儿函数的请教,高分赠送,谢谢
我想实现这么一个函数;
我有一个字符串‘2002200520062008’,当然这个串不是一个固定长度的年份时间的序列。
通过一个函数实现2003是处在第几个从右边数的年份段上?
上述的只需要划分为以下年份段
1。(2008,..)
2。[2006,2008)
3. [2005,2006)
4. [2002,2005)
应该输出的的值是4
谢谢高手帮忙了
问题点数:100、回复次数:9Top
1 楼freedom2001(天翔)回复于 2004-05-03 01:50:26 得分 20
string ls_str, ls_date
int li_count
int i
int li_year1, li_year2, li_date
ls_str = ......... //字符串赋值
ls_date = ........ //查询年份赋值
li_date = int(ls_date)
li_count = len(ls_date)/4
for i = 0 to li_count-1
li_year1 = mid(ls_str, i*4+1, 4)
li_year2 = mid(ls_str, (i+1)*4+1, 4)
if li_date < li_year2 and li_date>=li_year then
messagebox('提示',string(li_count - i))
end if
next
应该是这样了,自己调试一下Top
2 楼internetcsdn(2003-8-7 9:20:26)回复于 2004-05-03 08:06:50 得分 10
try
create function get_date(@ye varchar(10))
returns int
as
begin
declare @re table (id int identity(1,1),ye varchar(10),ye2 varchar(10))
declare @va varchar(50)
select @va ='2002200520062008'
insert @re (ye,ye2)
select substring(@va,len(@va)-3,4),''
union all select substring(@va,len(@va)-7,4),substring(@va,len(@va)-3,4)
union all select substring(@va,len(@va)-11,4),substring(@va,len(@va)-7,4)
union all select substring(@va,len(@va)-15,4),substring(@va,len(@va)-11,4)
declare @r int
select @r =id from @re where @ye between ye and ye2
return @r
end
select dbo.get_date('2004')Top
3 楼tommysun(每天进步多一点)回复于 2004-05-03 10:42:04 得分 20
Declare @year varchar(1000),@ask varchar(4),@tmp varchar(4)
Set @year = '2002200320062008'
Set @ask = '2004'
Declare @i int,@j int,@re int
Set @i = 0
Set @re = 1
While (len(@year) >= 4) and (@i = 0)
Begin
Set @tmp = right(@year,4)
if @tmp >= @ask
Set @j = 1
Else
Set @j = 0
Set @year = left(@year,len(@year) - 4)
Set @re = @re + 1
if @j = 1 and len(@year) >= 4 begin
Set @tmp = right(@year,4)
if @tmp <= @ask
Set @i = 1
End
End
if @i = 0
Set @re = 0
Select @re
Top
4 楼zjcxc(邹建)回复于 2004-05-03 10:47:21 得分 50
--处理函数
create function f_get(
@year int, --要查询的年份
@str varchar(8000) --字符串
)returns int
as
begin
declare @i int,@r int
select @i=len(@str),@r=0
while @i>0 and @year<right(@str,4)
select @i=@i-4
,@str=left(@str,@i)
,@r=@r+1
return(@r)
end
go
--调用
select dbo.f_get(2003,'2002200520062008')Top
5 楼zjcxc(邹建)回复于 2004-05-03 10:49:06 得分 0
--处理函数
create function f_get(
@year int, --要查询的年份
@str varchar(8000) --字符串
)returns int
as
begin
declare @r int
set @r=0
while @str<>'' and @year<right(@str,4)
select @str=left(@str,len(@str)-4)
,@r=@r+1
return(@r)
end
go
--调用
select dbo.f_get(2003,'2002200520062008')Top
6 楼zjcxc(邹建)回复于 2004-05-03 10:49:49 得分 0
--函数还可以再简单
--处理函数
create function f_get(
@year int, --要查询的年份
@str varchar(8000) --字符串
)returns int
as
begin
declare @r int
set @r=0
while @year<right(@str,4)
select @str=left(@str,len(@str)-4)
,@r=@r+1
return(@r)
end
go
--调用
select dbo.f_get(2002,'2002200520062008')Top
7 楼internetcsdn(2003-8-7 9:20:26)回复于 2004-05-03 10:51:49 得分 0
向大佬学习Top
8 楼SoarInAir(亮子)回复于 2004-05-03 15:58:06 得分 0
循环外初值设定应为: @r=1Top
9 楼seekmoon(haha)回复于 2004-05-03 16:10:22 得分 0
markTop
相关问题
- 如何使用CopyFileEx API 函数?? 100分赠送。
- 写一函数新建窗体,100分赠送
- 急需office的接口函数库和说明!200分高分赠送
- 有关CEdit的成员函数GetLine()的用法,请教高手!50分赠送
- 至今,我不明白为什么使用友元(friend)函数!(50分赠送)
- 分页函数
- 帮我按说明申明一个函数,本帖加另一帖100分赠送http://community.csdn.net/Expert/topic/4188/4188408.xml?temp=.0799982
- 散分!!纯虚函数与虚函数??
- 150分!需两个函数!
- WNetGetResourceParent 函数用法 100分!!!!!




