Estou procurando uma função com valor de tabela embutida que decodifique caracteres codificados em URL (como %20 para espaço). referência
Eu vejo outras funções , mas não vi uma que seja uma função com valor de tabela embutida. Estou tentado a escrever um monte de instruções REPLACE em uma função, mas estou querendo saber se há uma maneira melhor.
CREATE FUNCTION dbo.itvfURLDecode
(
@StringValue VARCHAR(MAX)
)
RETURNS TABLE
AS
RETURN (
SELECT REPLACE(REPLACE(@StringValue,'%2B','+'),'%20',' ') /* etc..*/ AS DecodedValue
)
;WITH cteData AS
(
SELECT 'This%2Bis%20a%20test%3C%3E%20ok%3F%20100%25' AS example
)
SELECT
example, q.DecodedValue /* returns: This+is a test<> ok? 100% */
FROM cteData c
CROSS APPLY dbo.itvfURLDecode(example) q
Embora eu não tenha certeza sobre o desempenho para suas necessidades específicas, aqui está um exemplo de uso de um TranslationTable CTE junto com um CTE recursivo que localizará e substituirá valores na string de entrada para o TVF.
Você pode realmente ver a progressão do CTE recursivo se comentar
--where cnt = 0
na parte inferior do TVF