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