在工作中經常要寫SQL語句少則百行,大都是幾百行。
在C# 中,把SQL語句指派為字元串。由于字元串過長,并且要利于可讀性,一般會保留SQL格式。複制,粘貼,回車,一上午就貼了一個SQL語句,效果極其低下。
在工作空餘時間,自己想有什麼好的辦法可以快速的貼過來Sql 語句?
1 .使用@ 字元,但是Sql 裡面會有參數,還有特殊字元轉化,這其中對思維,邏輯考量比較大,稍不留意就會出錯。簡單短少的語句可以使用。
2 .Vs 編輯器中的自動折行,代碼格式化?對sql字元串沒有識别作用。
3 .那就試試用Excel 拼接出自己想要的樣式。
先用一個一百行以上的sql 語句來試試,複制一個100行的Sql 語句,粘貼到空白表格的D列(随便一列都可以)。
a .一定要以文本的方式粘貼,會自動占據表格的100列(保留Sql格式),不然都會粘貼到一列,會無比糟糕。
b .在c1單元格寫公式 ,用拼接字元串‘&’拼出自己想要的格式 =""""&D1&" ""+"
c .然後自動填充,就得到自己想要的代碼格式了
d .粘貼到VS編輯器中,把最後一行“+”替換成“;”
不到一分鐘搞定。
貼一個代碼小片段:
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 " + ……