•  

    I ran mine and Richard's functions on Jeffs test data (pushed up to 1000000 rows) and my function above (at 00:01:25.603) just pipped Richards (at 00:01:57.740).

     

    alter table #HexTest add ASCIIValue varchar (20)

    go

    if object_id ('tempdb.dbo.#TimeTrial') is not null drop table #TimeTrial

    create table #TimeTrial (Event varchar (20), DateStamp datetime default getdate ())

    update #HexTest set ASCIIValue = null       -- reset

    insert #TimeTrial (Event) values ('RichardStart')

    update #HexTest set ASCIIValue = dbo.f_hextostr (HexValue)

    insert #TimeTrial (Event) values ('RichardFinish')

    select * from #HexTest

    update #HexTest set ASCIIValue = null       -- reset

    insert #TimeTrial (Event) values ('EddieStart')

    update #HexTest set ASCIIValue = dbo.fn_HexToAlpha (HexValue)

    insert #TimeTrial (Event) values ('EddieFinish')

    select * from #HexTest

    select (select DateStamp from #TimeTrial where Event = 'RichardFinish') - (select DateStamp from #TimeTrial where Event = 'RichardStart') Richard

    select (select DateStamp from #TimeTrial where Event = 'EddieFinish') - (select DateStamp from #TimeTrial where Event = 'EddieStart') Eddie

    Eddie.