• dbo.GetNums is as per below, straight from one of Jeff's discussions/articles I believe:

    CREATE FUNCTION [dbo].[GetNums]

    (

    @low AS BIGINT,

    @high AS BIGINT

    )

    RETURNS TABLE WITH SCHEMABINDING

    AS

    RETURN

    WITH

    L0 AS (SELECT c FROM (VALUES(1),(1)) AS D(c)),

    L1 AS (SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B),

    L2 AS (SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B),

    L3 AS (SELECT 1 AS c FROM L2 AS A CROSS JOIN L2 AS B),

    L4 AS (SELECT 1 AS c FROM L3 AS A CROSS JOIN L3 AS B),

    L5 AS (SELECT 1 AS c FROM L4 AS A CROSS JOIN L4 AS B),

    Nums AS (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum

    FROM L5)

    SELECT TOP(@high - @low + 1) @low + rownum - 1 AS n

    FROM Nums

    ORDER BY rownum;

    For our purposes capitalising each Letter of a word is acceptable.