[20220331]如何調整sql語句.txt

lfree發表於2022-04-01

[20220331]如何調整sql語句.txt
--//生產環境檢視檢視定義,在我的機器經過toad格式化檢視的語句如下.

CREATE OR REPLACE FORCE VIEW ETC_ZY_LISTDETAIL
...
)
BEQUEATH DEFINER
AS

SELECT t1.fphm AS busno
      ,                           /*業務流水號*/
       t2.jlxh AS listdetailno
      ,                           /*明細流水號*/
       t2.fyxm AS chargecode
      ,                          /*收費專案程式碼*/
       t3.sfmc AS chargename
      ,                          /*收費專案名稱*/
       '' AS prescribecode
      ,                          /*處方編碼*/

--//出現這樣的情況,看著非常不舒服,主要原因我定義toad格式化sql語句模式逗號在前面.
--//參考連結: [20150304]關於sql格式化問題.txt =>http://blog.itpub.net/267265/viewspace-1448016/

--//也就是實際上sql語句如下:
SELECT empno ,       /* empno  */
       ename ,       /* ename  */
       job ,         /* job    */
       mgr ,         /* mgr    */
       hiredate ,    /* hiredate */
       sal ,         /* sal     */
       comm ,        /* comm    */
       deptno        /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//經過toad格式化後檢視如下,看上去變得更長了,閱讀也不方便:
/* Formatted on 2022/4/1 8:18:53 (QP5 v5.269.14213.34769) */
SELECT empno
      ,                                                           /* empno  */
       ename
      ,                                                           /* ename  */
       job
      ,                                                           /* job    */
       mgr
      ,                                                           /* mgr    */
       hiredate
      ,                                                         /* hiredate */
       sal
      ,                                                          /* sal     */
       comm
      ,                                                          /* comm    */
       deptno                                                    /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//如何調整呢?測試看看vim下如何快速實現:

--//定義修改範圍,使用m命令標識a,b 然後執行如下:
:'a,'bg/^\s*,/s/$/,/
:'a,'bg/^\s*,/s///

--//第一步替換開頭含有,的行在結尾加入, .
--//第二步刪除開頭的逗號.

--//處理後情況如下:
SELECT empno
                                                           /* empno  */,
       ename
                                                           /* ename  */,
       job
                                                           /* job    */,
       mgr
                                                           /* mgr    */,
       hiredate
                                                         /* hiredate */,
       sal
                                                          /* sal     */,
       comm
                                                          /* comm    */,
       deptno                                                    /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//然後在toad sql編輯器裡面格式化處理,最後顯示如下:
/* Formatted on 2022/4/1 8:20:04 (QP5 v5.269.14213.34769) */
SELECT empno
      /* empno  */
      ,ename
      /* ename  */
      ,job
      /* job    */
      ,mgr
      /* mgr    */
      ,hiredate
      /* hiredate */
      ,sal
      /* sal     */
      ,comm
      /* comm    */
      ,deptno                                                    /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');
--//感覺也好不到那裡去。

--//處理如下:
:'a,'bg/\s*,/j

--//處理如下:
:'a,'bs+/\*+--+
:'a,'bs+\*/++
:'a,'bs/\s*$//

--//最後結果如下:
SELECT empno   -- empno
      ,ename -- ename
      ,job -- job
      ,mgr -- mgr
      ,hiredate -- hiredate
      ,sal -- sal
      ,comm -- comm
      ,deptno    -- deptno
      FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//如果這樣在toad下格式化,結果如下,感覺使用--在結尾這樣的風格更好,不會折行:
SELECT empno                                                          -- empno
      ,ename                                                          -- ename
      ,job                                                              -- job
      ,mgr                                                              -- mgr
      ,hiredate                                                    -- hiredate
      ,sal                                                              -- sal
      ,comm                                                            -- comm
      ,deptno                                                        -- deptno
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');


--//主要最近在最佳化sql語句,看各類開發寫sql語句超長,風格各異,不可能統一風格以及習慣,以及改正開發不好習慣.
--//我發現我們團隊好像有人寫的sql無論多長就是一行.佩服!!
--//記錄下來,避免在這些細節上浪費時間,在檢視自己喜歡的風格sql語句時心情更好,定位問題更快.
--//比如連結[20220331]為什麼不使用索引.txt 的例子就是類似的情況,浪費大量的時間.
--//^_^,感覺自己有一點點強迫症.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2885299/,如需轉載,請註明出處,否則將追究法律責任。

相關文章