• Try to specify the alises all in one place. Save yourself some typing. Also build the full select starement. Also could be used as a create view statement. Interesting idea though.

    INSERT INTO #ExpressionToDataTypeAndNull

    ( DATA_TYPE ,

    IS_NULLABLE ,

    CustomExpression

    )

    VALUES

    ( 'varchar','YES','LTRIM(RTRIM(ISNULL("<column>",'''')))')

    ,( 'varchar','NO','LTRIM(RTRIM("<column>"))"')

    ,( 'nvarchar','YES','LTRIM(RTRIM(ISNULL("<column>",'''')))')

    ,( 'nvarchar','NO','LTRIM(RTRIM("<column>"))')

    ,( 'datetime','YES','CAST("<column>" AS varchar(max))')

    ,( 'datetime','NO','CAST("<column>" AS varchar(max))')

    ;

    DECLARE @TableName nvarchar(128)

    SET @TableName = 'FictionalEmployees'

    DECLARE @SqlSelect NVARCHAR(MAX)

    SELECT @SqlSelect = COALESCE(

    @SqlSelect + ', ' + ISNULL(REPLACE(CustomExpression,'<column>', COLUMN_NAME), COLUMN_NAME )

    , ISNULL(REPLACE(CustomExpression,'<column>', COLUMN_NAME), COLUMN_NAME )

    ) + ' AS "' + COLUMN_NAME + '"'

    FROM INFORMATION_SCHEMA.COLUMNS a

    FULL OUTER JOIN #ExpressionToDataTypeAndNull b

    ON a.DATA_TYPE = b.DATA_TYPE

    AND a.IS_NULLABLE = b.IS_NULLABLE

    WHERE TABLE_NAME = @TableName

    ORDER BY ordinal_position ASC;

    SET @SqlSelect = 'SELECT ' + @SqlSelect + 'FROM ' + @TableName

    PRINT @SqlSelect

    -- EXECUTE sp_executesql @SqlSelect