यह काम करता प्रतीत होता है, हालांकि मैंने इसे केवल एक स्ट्रिंग पर आजमाया है (जिसमें फ़ॉन्ट 2 स्थानों पर सेट है)। मैंने कोड के साथ शुरुआत की जो सभी एचटीएमएल को स्ट्रिप्स करता है और इसे केवल 'फ़ॉन्ट-आकार:*' देखने और बदलने के लिए संशोधित करता है। मुझे संदेह था कि अगर फ़ॉन्ट का आकार 9 या उससे कम (1 वर्ण) है और मैं इसे 10 (2 वर्ण) में बदल रहा हूं, तो समस्याएँ होंगी, लेकिन ऐसा लगता है कि यह उसके लिए भी काम कर रहा है।
ALTER FUNCTION [dbo].[udf_ChangeFont]
(@HTMLText VARCHAR(MAX), @FontSize VARCHAR(2))
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @Start INT
DECLARE @End INT
DECLARE @Length INT
SET @Start = CHARINDEX('font-size:',@HTMLText)
SET @End = CHARINDEX(';',@HTMLText,CHARINDEX('font-size:',@HTMLText))
SET @Length = (@End - @Start) + 1
WHILE @Start > 0
AND @End > 0
AND @Length > 0
BEGIN
SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'font-size:' + @FontSize + ';')
SET @Start = CHARINDEX('font-size:',@HTMLText, @End+2)
SET @End = CHARINDEX(';',@HTMLText,CHARINDEX('font-size:',@HTMLText, @End+2))
SET @Length = (@End - @Start) + 1
END
RETURN LTRIM(RTRIM(@HTMLText))
END