2011-08-11 64 views
0

我想在SQL SERVER中编写一个用户定义的函数,它将字符串作为参数,并检查它是否在字符串中有'/',它会返回1,否则为0.函数检查字符串是否有

请指导我实现此场景。

+1

似乎毫无意义,当'CHARINDEX'已经存在,并告诉你的人物会出现在什么位置如果它没有出现在字符串中,则为0。 –

回答

4

不确定为什么你想要制作一个UDF时,TSQL的CHARINDEX是你真正需要的。

尝试是这样的,如果你真的需要一个UDF:

CREATE FUNCTION dbo.HasSlash(@input varchar(max)) 
RETURNS bit 
AS 
BEGIN   
    RETURN CHARINDEX('/',@input); 
END; 

使用方法如下:

SELECT dbo.HasSlash('hello/world'); -- returns 1 
SELECT dbo.HasSlash('hello world'); -- returns 0 
0

下面是一个例子:

if OBJECT_ID('dbo.fn_CheckSlash') is not null 
    drop function dbo.fn_CheckSlash 
go 
create function dbo.fn_CheckSlash(
    @str varchar(max)) 
returns bit 
as begin 
    return cast(case when @str like '%/%' then 1 else 0 end as bit) 
end 
go 
select dbo.fn_CheckSlash('ac+dc'), dbo.fn_CheckSlash('ac/dc') 

实践之外,因为它增加了更多比它解决的复杂性,你就不会创建一个用户定义的函数。您可以使用like '%/%'

相关问题