0

我的 SQL Server 表结构是:

BranchName
BranchManagerName
Address
Zip Info
PhoneNo
FaxNo
Email
Status
CreatedOn

现在我尝试将 , 等列的值作为三个Zip Info值传递。State=XXXXcity=YYYYZip=123

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

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

4

3 回答 3

7

不不不不不不不!!!

不要这样做!将它们保存为单独的列。切勿在单个列中存储多个字段!

尝试为 选择所有行时会遇到问题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 中,我假设您可以有 NULL 值,在 INSERT 中我假设不会有 NULL 值。

如果您将它们存储为 3 列并创建一个视图或计算列(如果您真的希望它们作为单个字段),您的情况会好得多。通过尝试将值存储在一起,您正在着手解决一个常见的不良设计问题。

在这里寻找在 SQL Server 中拆分字符串的乐趣!

此外,不要在列名中添加空格,除非 [您喜欢] 在整个 [over the] 地方都有 [大括号]。

于 2012-04-18T13:01:09.777 回答
1

我同意@KM。您不应该将此数据存储在同一字段中。如果您将 Zip Info 数据存储在同一字段中,那么您在搜索数据时会遇到严重问题,因此您不应该这样做。

但如果你必须,那么你将有一个类似于这样的插入:

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
于 2012-04-18T13:06:30.420 回答
0

兄弟,如果你想为字段 zip_info 添加 state,city-Zip 格式的值,state,city 和 zip 的值如下 XXX,YYYY,123 你只需将所有三个值都放在下面的格式Zip_Info 在插入语句中的位置

'XXX,YYYY-123'

于 2012-04-18T13:23:10.277 回答