3
我有一個標量UDF負責返回一個NVARCHAR(MAX)
與獨特的詞在它。不要問爲什麼。 :)這裏可以避免使用CURSOR嗎?
樣品輸入: 「比薩菠蘿香腸比薩奶酪」
輸出樣本: 「比薩菠蘿香腸奶酪」。
這裏的UDF:
ALTER FUNCTION [dbo].[ToUniqueString]
(
@NonUniqueString NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @ReturnValue NVARCHAR(MAX)
-- Split the string by spaces.
DECLARE @Words TABLE (Word NVARCHAR(MAX))
INSERT INTO @Words
SELECT Word FROM dbo.SplitText(@NonUniqueString , ' ')
-- Cursor through the records, creating a unique string.
DECLARE @CurrentWord NVARCHAR(MAX)
DECLARE @UniqueString NVARCHAR(MAX) = ''
DECLARE WordCursor CURSOR FOR SELECT DISTINCT Word FROM @Words
OPEN WordCursor
FETCH NEXT FROM WordCursor INTO @CurrentWord
WHILE @@FETCH_STATUS = 0
BEGIN
SET @UniqueString = @UniqueString + ' ' + @CurrentWord
FETCH NEXT FROM WordCursor INTO @CurrentWord
END
CLOSE WordCursor
DEALLOCATE WordCursor
RETURN RTRIM(LTRIM(@UniqueString))
END
能把它沒有遊標的情況做些什麼呢? WHILE
循環效率更高嗎?那麼FOR XML
?
只是尋找最有效的方式來實現要求。
如何'FOR XML'性能比較光標? – RPM1984 2011-02-28 04:28:32
@ RPM1984:你將不得不基準,但如果它不是更快,我會感到驚訝...... – 2011-02-28 04:29:16
nps。那麼我現在就和這個一起去。乾杯! – RPM1984 2011-02-28 04:30:52