• Here is an example of a possible method you could use:

    -- set up sample table with data

    IF OBJECT_ID('dbo.my_table') IS NOT NULL

    DROP TABLE dbo.my_table

    GO

    CREATE TABLE dbo.my_table

    (

    ID int identity(1,1) NOT NULL,

    F1 varchar(4),

    F2 varchar(4),

    F3 varchar(4),

    F4 varchar(4),

    F5 varchar(4)

    )

    SET NOCOUNT ON

    INSERT my_table (F1,F2,F3,F4,F5) SELECT '0','0','9673','0','9781'

    INSERT my_table (F1,F2,F3,F4,F5) SELECT '0','9672','9673','0','0'

    INSERT my_table (F1,F2,F3,F4,F5) SELECT '0','9672','9673','9674','0'

    INSERT my_table (F1,F2,F3,F4,F5) SELECT '0','0','0','9674','9781'

    SELECT * FROM my_table

    -----------------------------

    -- build up sql statement & execute

    DECLARE

    @my_columns nvarchar(MAX),

    @sql nvarchar(MAX)

    SELECT @my_columns =

    COALESCE(LTRIM(RTRIM(@my_columns)) + ',' ,'') + 'NULLIF([' + c.name + '],''0'')'

    FROM

    sys.tables t

    INNER JOIN sys.columns c

    ON t.object_id = c.object_id

    INNER JOIN sys.types st

    ON c.system_type_id = st.system_type_id

    WHERE

    t.name = 'my_table'

    ANDst.name = 'varchar'

    ANDc.max_length = 4

    ANDc.column_id >= 2

    ORDER BY

    c.column_id

    SELECT @my_columns = 'COALESCE(' + @my_columns + ')'

    SET @sql = 'SELECT ID, ' + @my_columns + ' AS my_value FROM my_table'

    PRINT @sql

    EXEC sp_executesql @sql