在SQLServer2005中插入查询

在SQLServer2005中插入查询,sql,sql-server,sql-server-2005,insert,Sql,Sql Server,Sql Server 2005,Insert,我的SQL Server表结构是: BranchName BranchManagerName Address Zip Info PhoneNo FaxNo Email Status CreatedOn 现在我尝试将Zip Info列的值作为三个值传递,如State=XXXX,city=YYYY,Zip=123 我需要这三个值(State,City,Zip)以sql表中的State,City-Zip(xxxx,yyyy-123)的格式存储在Zip Info列中 如何在SQL Server 200

我的SQL Server表结构是:

BranchName
BranchManagerName
Address
Zip Info
PhoneNo
FaxNo
Email
Status
CreatedOn
现在我尝试将
Zip Info
列的值作为三个值传递,如
State=XXXX
city=YYYY
Zip=123

我需要这三个值(
State,City,Zip
)以sql表中的
State,City-Zip
xxxx,yyyy-123
)的格式存储在
Zip Info
列中


如何在SQL Server 2005中编写插入查询?

否否否否否否

不要这样做!!将它们另存为单个列。不要在一列中存储多个字段

尝试为
State='NY'
选择所有行时会遇到问题,在这些行中,您需要经常进行字符串操作,并且非索引搜索速度较慢

将它们存储为单独的列,并在显示它们时将它们连接起来

SELECT
    ISNULL(State,'')+ISNULL(', '+city,'')+ISNULL('-'+Zip,'') AS ZipInfo
    FROM YourTable
始终可以在插入中连接字符串:

INSERT INTO YourTable
        (col1, col2, col3, Col123)
    VALUES
        (@col1, @col2, @col3, @col1+', '+@col2+'-'+@col3)
您的“空保护”将根据需要而变化,在SELECT中,我假设您可以有空值,在INSERT中,我假设没有空值

如果您将它们存储为3列,并创建一个视图或计算列(如果您确实希望将它们作为单个字段),您的性能会更好。您试图将这些值存储在一起,这是一个常见的糟糕设计问题

在这里寻找


另外,不要在列名中加空格,除非[你喜欢]到处都有[大括号]。

我同意@KM。您不应将此数据存储在同一字段中。如果将Zip信息数据存储在同一字段中,则搜索数据时会遇到重大问题,因此应而不是这样做

但如果您必须这样做,您将有一个类似的插入:

INSERT INTO yourTable
(
    BranchName
    , BranchManagerName
    , Address
    ,[Zip Info]
    ,PhoneNo
    , FaxNo
    , Email
    ,Status
    , CreatedOn
)
SELECT  BranchName
    , BranchManagerName
    , Address
    ,State + ', ' + City + '-' + Zip
    ,PhoneNo
    , FaxNo
    , Email
    ,Status
    , CreatedOn

兄弟,如果你想在格式上增加价值 州、市邮政编码 对于zip_info字段以及state、city和zip的值,如下所示 三十、 YYYY,123 您只需要在insert语句中的Zip_Info位置按以下格式放置所有三个值


“XXX,YYYY-123”

您尝试过什么?为什么你想把zip信息存储在一个字段中?只是为了支持KM的回答:不要这样做!!!想都别想。。。。这是三个非常不同的信息片段-不要将它们连接在一起来存储它们-迟早-很可能更早-您将不得不再次解析它们!如果您有三条不同的*信息,请使用三个单独的列!有一个
State
列、一个
City
列和一个
ZipCode
列。如果你在某个地方需要“复合”表示,那么就从这三个独立的部分构建它吧@当然是用户;只需将ZipInfo列替换为三个新列:City、State和Zip。有一本好书介绍了我推荐的许多SQL反模式和解决方案:@w0lf是否可以在一列中存储三个值?@user:NO!!-请勿在列中存储多个值!使用三列-User,如果您在一列中有多个值,那么您的数据库甚至不会在1NF中。