2016-02-22 81 views
1

是我的表名:SAMPLE1插入行逐列在SQL Server下面

ID NAME         ADDRESS 
1 DAN NO.10,CHANGJIANG XI STREET,JIANXI DISTRECT ,LUOYANG CITY,HENAN ,CHINA 
2 SAM BINALBAGAN NEGROS OCCIDENTAL PHILIPPINES 
3 JOSE B-36 L-40 PH-1 ST. JOSEPH VILLAGE 7, MARINIG CABUYAO LAGUNA, 4025 

我需要輸入的行與列,但這裏的挑戰是,在樣品2我只有4列源行在使用分割功能時獲得6個或更多,如何在列中插入數據後在ADRS4中插入/追加餘額數據。

輸出應該如下:

ID NAME     ADRS1   ADRS2   ADRS3    ADRS4 
1 DAN     NO.10  NGJIANG XI STREET JIANXI DISTRECT LUOYANG CITY,HENAN ,CHINA 
+1

您在這裏面臨的挑戰是因爲您的設計糟糕。您已將分隔的數據存儲在單個列中。這違反了1NF,是一個非常痛苦的工作。你將不得不首先解析這些數據。 http://sqlperformance.com/2012/07/t-sql-queries/split-strings然後,您將必須使用Tab Alleman發佈的問題中描述的技術將數據重新排列到列中。 –

回答

1
INSERT INTO table_name (column1,column2,column3,...) 
VALUES (value1,value2,value3,...); 

如果你想跳過一個值只是輸入一個空值。所以,你的查詢應該是這個樣子:

INSERT INTO table_name (name,adrs1,adres2,...) 
VALUES (John,Null,Xi Street,...); 

你的SQL的設計並沒有很大的開始與國際海事組織,但應與當前設置工作。我會創建一個有多個列的表格,然後根據需要插入,如下所示:

CREATE TABLE [dbo].[Table_1](
    [id] [int] NULL, 
    [name] [varchar](50) NULL, 
    [ADRS1] [varchar](50) NULL, 
    [ADRS2] [varchar](50) NULL, 
    [ADRS3] [varchar](50) NULL, 
    [ADRS4] [varchar](50) NULL 
) ON [PRIMARY]