0

私のSQL Serverテーブル構造は次のとおりです。

BranchName
BranchManagerName
Address
Zip Info
PhoneNo
FaxNo
Email
Status
CreatedOn

ここで、、 、 のZip Infoような列の値を 3 つの値として渡そうとします。State=XXXXcity=YYYYZip=123

そして、これらの 3 つの値 ( )をこの形式( ) の列に SQL テーブルにState,City,Zip格納する必要があります。Zip Infostate,city-Zipxxxx,yyyy-123

SQL Server 2005 で挿入クエリを作成する方法は?

4

3 に答える 3

7

NO NO NO NOOOOOOO!!!

それをしないでください!それらを個々の列として保存します。複数のフィールドを 1 つの列に格納しないでください。

のすべての行を選択しようとすると問題が発生し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)

あなたの「null保護」は必要に応じて異なります。SELECTではNULL値を持つことができると仮定し、INSERTではNULL値がないと仮定します。

それらを3つの列として保存し、それらを単一のフィールドとして本当に必要とする場合は、ビューまたは計算列を作成すると、はるかに良いでしょう。値を一緒に保存しようとすることで、よくある悪い設計の問題に着手しています。

SQL Server で文字列を分割する楽しみについては、こちらをご覧ください。

また、すべての場所に [中かっこ] が [好き] でない限り、列名にスペースを入れないでください。

于 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

ブロ、フォーマット state,city-Zip の値をフィールド zip_info に追加したい場合、state,city および zip の値は次のとおりです。XXX,YYYY,123 insert ステートメントの Zip_Info の場所

「XXX,YYYY-123」

于 2012-04-18T13:23:10.277 に答える