閱讀137 返回首頁    go 阿裏雲 go 技術社區[雲棲]


SQL語句中關於字符串的拚接問題

要求:將ORACLE數據庫裏麵的XX信息(表B,客戶的數據庫)導入到“接口表”(A,自己係統的數據庫)中。此對照表的信息同ORACLE裏麵的XX數據表信息一樣。此項操作由係統的係統管理員來完成,並且可以隨時導入,對於已經導入成功的數據,不會重複導入。  
   表的結構:    
CREATE TABLE A(
ID              NUMBER(20),
UPDATED_BY      NUMBER(20),
UPDATE_DATE      DATE,
UPDATE_LOGIN     NUMBER(20),
CREATION_DATE    DATE,  
CREATED_BY       NUMBER(20),
NAME            VARCHAR2(60),
Import_State     VARCHAR2(1))
答案:foreach (DataRow dr in dsOra.Tables[0].Rows)
                {
string str = "insert when (not exists(select 1 from A where A.ID='"+dr["ID"]+"'))then into A values('"+dr["ID"].ToString()+ "','" + dr["UPDATED_BY"].ToString() + "','" +dr["CREATED_BY"].ToString() + "',to_date('" +       dr["UPDATE_DATE"].ToString() + "','YYYY-MM-DDHH24:MI:SS'),'" + dr["UPDATE_LOGIN"].ToString() +"',to_date('" + dr["CREATED_DATE"].ToString() +"','YYYY-MM-DD HH24:MI:SS'),'" +dr["NAME"].ToString() + "','" +dr["Import_State"].ToString() + "')select 1 from dual";
               Append(str);
               Append(";");
             }
//在string str語句之前已經把表B中的數據讀取到一個DATASET中了,所以用dr[]來處理。(不可以直接操縱客戶的數據庫,所以用到了DATASET

  小注:1、數字即NUMBER類型的,要按字符串的形式插入,如果按數字(轉換到數據庫sql操作的地方,不帶引號)的方式,當列為空的時候,插入數據,會報錯。

      2、注意DATE類型數據的拚接方式。注意dr[]的寫法。注意dual

      3、SQL拚接大法:

       Step1括號先寫上()

                  Step2:在括號內寫上(,     ,     ,     ,      ,     ,

                  Step3:再寫上單引號(,’     ‘,’      ‘,’      ‘,’     ‘,’      ‘,)

                  Step4:再在單引號的基礎上添加雙引號(,’”      “‘,’”      “‘,’”      “‘,’”      “‘,’”     “‘,)

                   Step5:在4的基礎上添加加號(,’”+    + “‘,’”+      +“‘,’”+      +“‘,’”+      +“‘,’”+     +“‘,)

                   Step6:去掉括號前後的那個逗號(’”+      + “‘,’”+        +“‘,’”+       +“‘,’”+       +“‘,’”+      +“‘)

                   備注:其實數字拚接是 "+數字+"這種形式,但考慮到插入為空的情況,有時就要拚成字符串的形式


 

 

 
                        

                      

 

最後更新:2017-04-03 12:54:10

  上一篇:go 完整會計科目表一
  下一篇:go C# WinForm程序的App.Config數據庫連接配置文件