我创建了嵌套游标,它基本上将一个表的列值与另一个表的列值进行比较,并返回最接近的匹配。
表的内容是:
(ColumnName和Values如下) 表A
**Names**
MandarinOrange
SweetApple
SourApple
AppleThatTasteslikeGrapes
表B
**Names**
PlainOrange
SourOrange
Grapple
.
.
.
因此Cursor1(外部游标)从table1中获取每个名称并与Table2中的所有名称进行比较,并返回最接近的匹配.Cursor 2(内部)是检索表2中的名称
我希望看到,如果有一种方法可以使用游标实现相同的avaoiding (因为它太慢了)
答案 0 :(得分:0)
避免使用游标总是更好的做法,在您的情况下,我认为游标也是可以实现的。它的关键是您为评估比较结果而执行的计算。
一种解决方案是创建一个函数,取两个字符串并返回1/0值作为比较结果。然后,您可以将该函数作为SELECT语句的一部分进行调用,并保存游标迭代。
以下是此类功能的示例:
CREATE FUNCTION fn_Compare
(
@firstValue varchar(50),
@secondValue varchar(50)
)
RETURNS bit
AS
BEGIN
DECLARE @Result bit
SET @Result = 0 --False by default
--!Here goes your specific logic for comparing string!
IF @firstValue = @secondValue
SET @Result = 1
RETURN @Result
END
GO
--Use it in a sentance
SELECT dbo.fn_Compare('TEST', 'TEST') AS Match --True
SELECT dbo.fn_Compare('TEST', 'TEST2') AS Match --False
--Use it in a query
SELECT
name,
name,
dbo.fn_Compare(name, name) AS Match
FROM sysobjects
WHERE
Type = 'u'
--Cleanup
DROP FUNCTION fn_Compare
我希望这会有所帮助。