在SQLServer2005中插入查询
我的SQL Server表结构是:在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
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中。