--创建的自定义函数
CREATE function f_GetExhID(@Meeting_ID varchar(50),@Submint_PositionID varchar(50))
returns varchar(50)
as
begin
declare @ExhibitID varchar(50) select @ExhibitID=max(ExhibitID)
from Meeting_CoSubmit
where PositionID=@Submint_PositionID And Verify=1 And Meeting_ID=@Meeting_ID
return(
case when @ExhibitID is null then @Submint_PositionID+'001'
else @Submint_PositionID+right(1001+cast(right(@ExhibitID,3) as int),3) end
)
end
go--调用:
select dbo.f_GetExhID('公司甲','A')
CREATE function f_GetExhID(@Meeting_ID varchar(50),@Submint_PositionID varchar(50))
returns varchar(50)
as
begin
declare @ExhibitID varchar(50) select @ExhibitID=max(ExhibitID)
from Meeting_CoSubmit
where PositionID=@Submint_PositionID And Verify=1 And Meeting_ID=@Meeting_ID
return(
case when @ExhibitID is null then @Submint_PositionID+'001'
else @Submint_PositionID+right(1001+cast(right(@ExhibitID,3) as int),3) end
)
end
go--调用:
select dbo.f_GetExhID('公司甲','A')
解决方案 »
- SQL排序算法问题
- 请教一个查询
- sqlserver 2005中的 自增长类型是什么?
- SQL Server疑难
- 求一sql语句
- Help Please! Thank you very much.
- 如何在存储过程中定义一个超超大的类型为文本的局部变量怎么办
- 請問該sql語句執行的效率怎麼樣:SELECT TOP1 * FROM TABLE WHERE FIELDS='aa',謝謝
- [总300分,会继续加分]哪位大哥用编程实现过创建SQL Server的DTS package并且run the package的全过程[急]
- sql server 2000生成的脚本语言能不能直接在pb 中运行?
- 再问zjcxc(邹建): 如何彻底解决“超时已过期”
- server 7 如何订阅 server 2000 的发布!
returns varchar(50)
as
begin
declare @PositionID varchar(50),@ExhibitID varchar(50) select @ExhibitID=ltrim(rtrim(min(ExhibitID)))
from Meeting_CoSubmit where PositionID=@Submint_PositionID
And Verify=1 And Meeting_ID=@Meeting_ID
If @ExhibitID is null
--当没有纪录的的时候从001开始分配
Set @ExhibitID=@Submint_PositionID+'001'
else
Begin
--在有记录的时候,在原有的值上+1
--????
Set @ExhibitID=left(@ExhibitID,1)+right('000'+cast(cast(right(@ExhibitID,3) as int)+1 as varchar(10)),3)
End
return(@ExhibitID)
end
这句有错,我的ExhibitID是VARCHAR,不是INT,它的值是'A001','A002','A003'这样的值。
如果是max(varchar)
返回的是什么含义,谢谢!
将 varchar 值 '公司甲' 转换为数据类型为 int 的列时发生语法错误。
我试了呀~
CoSub_ID int 主键(自动增量)
Meeting_ID int 双选会ID,与上表对应
Co_UserName varchar/50 企业ID(对应企业的详细信息)
PositionID varchar/50 提交的区位
ExhibitID varchar/50 分配的展位
Verify int 是否审核通过
我的表结构
select max(name) from a只会返回一个列,如果还想同时显示max(name)的id,sort
这样
select id,max(name),sort from a就肯定会错,那一般怎么写,能满足这个要求,而且是最好的写法!
Meeting_ID int 双选会ID,与上表对应这是你定义的参数:
@Meeting_ID varchar(50)
--这是你自己写的调用:
select dbo.f_GetExhID('公司甲','A')
zjcxc(邹建) 兄,看看我的吧!:)
这些可都是你自己写的你自己搞错了数据类型,而不是我函数的错.
这个你自己解决吧,查询出"公司甲"的 Meeting_ID 做为参数传过去就行了,函数根本就没错.
还有比这好的么?
select * from a where name=(select max(name) from a)
可能返回name相同的多条记录