我实际上不擅长SQL中的函数,我更像是一个java / android程序员。但对于一个学校项目,我需要检查一个字符串是否在T-SQL中的某个数组中。 但我正在比较两家不同公司的数据,他们的数据都存在一些缺陷。其中一家公司的数据位于数据库中,另一家来自excel。
这样做的一种方法是使用SQL ofcourse的LIKE函数,但我不太清楚标准是什么。什么是完美的功能,如sql函数IN,但这需要一个完美的匹配......
所以我做的是以下内容:
创建一个提供Levenshtein distance的T-SQL函数,它比较两个字符串并给出Levenshtein距离。
这个功能很好用。
我的下一步是使用以下参数创建一个函数:
到目前为止我所拥有的是:
CREATE FUNCTION inArrayWithLevenstheinDist
(
-- Add the parameters for the function here
@stringToCheck varchar,
@levDist int,
@arr TABLE ???
)
RETURNS Boolean
AS
BEGIN
-- Declare the return variable here
DECLARE @Result bool
SET @Result = FALSE
-- Add the T-SQL statements to compute the return value here
DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=5)
BEGIN
IF [100].dbo.LEVENSTEINDIST(@stringToCheck,arr(@intFlag) < @levDist
SET @Result = TRUE
END //end if
SET @intFlag = @intFlag + 1
IF @intFlag = arr.size ??????
BREAK;
END //end while
GO
-- Return the result of the function
RETURN @Result
END //end function
GO
这不起作用并产生编译错误。 所以我的两个问题是(我认为我的代码是错的)
如何在函数中返回一个布尔值(我无法找到它:S)? offcourse我可以返回一个整数,并使用0表示false,使用1表示true,但是应该可以
如何在标准T-SQL IN函数中使用数组/列表/表?