日期:2014-05-18  浏览次数:20832 次

sql 简单的查询问题 在线等
SQL code
ALTER FUNCTION f_PMS_GetUserName
(
    @UserID VARCHAR(100)
)
RETURNS VARCHAR(100)
AS
BEGIN
    --定义
    DECLARE @ResultVar VARCHAR(100)
    --初始
    SET @ResultVar = ''
    --获取结果
    SELECT @ResultVar = @ResultVar + UserName
    FROM dbo.Sys_User WHERE ID IN (@UserID)
    --返回
    RETURN @ResultVar
END
GO



表【Sys_User】里的【ID】是int类型

执行:
SELECT DBO.f_PMS_GetUserName('7') --没问题

执行:
SELECT DBO.f_PMS_GetUserName('7,160')
报错:
在将 varchar 值 '7,160' 转换成数据类型 int 时失败。

------解决方案--------------------
SQL code

ALTER FUNCTION f_PMS_GetUserName
(
    @UserID VARCHAR(100)
)
RETURNS VARCHAR(100)
AS
BEGIN
    --定义
    DECLARE @ResultVar VARCHAR(100)
    --初始
    SET @ResultVar = ''
    --获取结果
    SELECT @ResultVar = @ResultVar + UserName
    FROM dbo.Sys_User WHERE CHARINDEX(',' + RTRIM(ID) + ',',',' + @UserID + ',') > 0
    --返回
    RETURN @ResultVar
END
GO