您的位置:首页 > 数据库

SQL语句中关于字符串的拼接问题

2014-01-08 09:37 344 查看
要求:将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:去掉括号前后的那个逗号(’”+
     + “‘,’”+        +“‘,’”+       +“‘,’”+       +“‘,’”+      +“‘)


                   备注:其实数字拼接是 "+数字+"这种形式,但考虑到插入为空的情况,有时就要拼成字符串的形式

 

 

 
                        
                      

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL 语句 字符串 拼接 c#