天天看點

sql 把某一列拼接_C#中如何巧妙的貼SQL字元串

sql 把某一列拼接_C#中如何巧妙的貼SQL字元串

在工作中經常要寫SQL語句少則百行,大都是幾百行。

sql 把某一列拼接_C#中如何巧妙的貼SQL字元串

在C# 中,把SQL語句指派為字元串。由于字元串過長,并且要利于可讀性,一般會保留SQL格式。複制,粘貼,回車,一上午就貼了一個SQL語句,效果極其低下。

在工作空餘時間,自己想有什麼好的辦法可以快速的貼過來Sql 語句?

1 .使用@ 字元,但是Sql 裡面會有參數,還有特殊字元轉化,這其中對思維,邏輯考量比較大,稍不留意就會出錯。簡單短少的語句可以使用。

2 .Vs 編輯器中的自動折行,代碼格式化?對sql字元串沒有識别作用。

3 .那就試試用Excel 拼接出自己想要的樣式。

先用一個一百行以上的sql 語句來試試,複制一個100行的Sql 語句,粘貼到空白表格的D列(随便一列都可以)。

sql 把某一列拼接_C#中如何巧妙的貼SQL字元串

a .一定要以文本的方式粘貼,會自動占據表格的100列(保留Sql格式),不然都會粘貼到一列,會無比糟糕。

b .在c1單元格寫公式 ,用拼接字元串‘&’拼出自己想要的格式  =""""&D1&" ""+"

c .然後自動填充,就得到自己想要的代碼格式了

d .粘貼到VS編輯器中,把最後一行“+”替換成“;”

不到一分鐘搞定。

sql 把某一列拼接_C#中如何巧妙的貼SQL字元串

貼一個代碼小片段:

  string[] ls_sql = new string[1];  ls_sql[0] = "select a.prdtcode,a.tran_qty,a.proce_no,a.place_order_no,a.sprod_id,a.pro_id,fy.mater,fy.man,fy.make    " +          "from " +           "(select aa.prdtcode,sum(aa.tran_qty) as tran_qty,aa.proce_no,aa.place_order_no,aa.sprod_id,aa.pro_id    " +           "from " +           "( select prdtcode,sum(tran_qty) as tran_qty,case when instr(proce_no,'\\',1) = 0 then proce_no when instr(proce_no,'\\',1) <> 0 then substr(proce_no,1,instr(proce_no,'\\',1) -1) end as proce_no,    " +           "place_order_no,sprod_id,pro_id    " +           "from (    " +           "  SELECT tran_detail.prdtcode,       " +           "         tran_detail.tran_qty,      " +           "         tran_detail.proce_no,    " +           "         tran_master.place_order_no,    " +           "         send_detail.prdtcode as sprod_id,    " +           "         tran_detail.pro_id    " +           "    FROM tran_detail,       " +           "         tran_master,send_detail,material,    " +           "         place_order_master      " +           "   WHERE ( tran_master.tran_no = tran_detail.tran_no ) and      " +           "          ( tran_master.mutuality_no = send_detail.order_no ) and    " +           "          (  tran_detail.seq_no = send_detail.seq_no ) and    " +           "tran_detail.prdtcode = material.prdtcode and    " +           "tran_master.place_order_no = place_order_master.place_order_no and    " +           "material.pro_flag = '2' and    " +           "         ( ( tran_master.kind = 'C' ) AND      " +           "         ( tran_detail.proce_no <> tran_master.place_order_no ) AND      " +           "         ( place_order_master.order_kind <> 'N' ) and    " +           "         ( tran_detail.proce_no not in ('*','A') ) and    " +           "          tran_detail.proce_no like 'ZH%' and    " +           "         ( to_char(tran_master.tran_date,'yyyymm') = '" + day + "') )       " +           "union all    " +           ……