日期:2014-05-18 浏览次数:20469 次
select dbo.f_DateADD('2001-1-01','2001-2-1')
------解决方案--------------------
引用别人的例子,LZ可以参考下如何使用函数!
create table tab1(CompanyPropertyID varchar(10),CompanyPropertyName varchar(100))
Insert into tab1
select '01','aaa'
union all select '02','bbb'
union all select '03','ccc'
create table tab2(SellID varchar(10),CompanyPropertyIDS varchar(100))
Insert into tab2
select 'A001','01;02;'
union all select 'A001','01'
union all select 'A001','01;03;'
union all select 'A001','01;02;03;'
select * from tab1
select * from tab2
--創建函數處理
create function dbo.fn_f(@s varchar(1000))
returns varchar(1000)
as
begin
declare @a varchar(1000)
declare @i int
set @a=''
set @i=1
while @i>0
begin
select @a=@a+CompanyPropertyName+';' from tab1 where CompanyPropertyID=substring(@s,@i,2)
set @i=charindex(';',@s,@i+3)-2
end
return(left(@a,len(@a)-1))
end
--刪除
drop table tab1
drop table tab2
drop function dbo.fn_f
--結果
select SellID,CompanyPropertyName=dbo.fn_f(CompanyPropertyIDS) from tab2
SellID CompanyPropertyName
---------------------------------------------
A001 aaa;bbb
A001 aaa
A001 aaa;ccc
A001 aaa;bbb;ccc
------解决方案--------------------
加上函数所有者dbo
dbo.f_DateADD
------解决方案--------------------
select dbo.f_DateADD
------解决方案--------------------
select dbo.f_DateADD('2001-1-01','2001-2-1')
我刚才试过了啊.没问题.
结果是:
4002-03-02 00:00:00.000
------解决方案--------------------
select dbo.f_DateADD('2001-1-01','2001-2-1')
------解决方案--------------------
完美的例子 CREATE FUNCTION f_DateADD(@Date datetime, @DateStr varchar(23) ) RETURNS datetime begin declare @@Date datetime select @@Date=datediff(year,@Date,convert(datetime,@DateStr)) return @@Date end go select dbo.f_DateADD('2001-1-01','2001-2-1') /* ----------------------- 1900-01-01 00:00:00.000 */