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