NO NO NO NOOOOOOO!!!
don't do it!! save them as individual columns. Never store multiple fields within a single column!
You'll have problems trying to select all rows for State='NY'
, where you'll need to constantly do string manipulations and have slow non-index searches.
store them as separate columns and concatenate them when you display them.
SELECT
ISNULL(State,'')+ISNULL(', '+city,'')+ISNULL('-'+Zip,'') AS ZipInfo
FROM YourTable
you can always concatenate strings in an insert:
INSERT INTO YourTable
(col1, col2, col3, Col123)
VALUES
(@col1, @col2, @col3, @col1+', '+@col2+'-'+@col3)
your "null protection" will vary as necessary, in the SELECT, I assume you could have NULL values, in the INSERT I assume there will be no NULL values.
Your would be much better off if you store them as 3 columns and create a view or computed column if you really want them as a single field. You are embarking on a common bad design issue by trying to store the values together.
look here for fun splitting strings in SQL Server!
Also, don't put spaces in your column names, unless [you like] having [braces] all [over the] place.