程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 使用正則表達式匹配tsql注釋語句

使用正則表達式匹配tsql注釋語句

編輯:更多數據庫知識

讓我們來看一些例子:

復制代碼 代碼如下:
--獲取表的count信息
select count(*) from T with(nolock)

--獲取特定值的count信息
select count(*) from T with(nolock)
where v = '--value'

--獲取表'T'的count信息
select count(*) from T with(nolock)

SELECT * from T --獲取表T
Where P

我們先來試著給出一個簡單的匹配:
復制代碼 代碼如下:
\-\-[^\r\n]*$

你會發現,它連第二條的SQL也匹配到了,這是不對的。看起來,我們應該排除"'"裡面的, 我們再來改改:
復制代碼 代碼如下:
\-\-[^\'\r\n]{0,}$

還是不對,這下雖然第二條的SQL沒有匹配,但連第三條的都不匹配了,看起來還是不對。

那到底怎麼樣才能真正匹配到所有的SQL注釋呢?

首先我們來總結一下SQL注釋的一些特點:

1. 以--開頭

2. 注釋的內容,應該不會被包含在一對''之內

3. 注釋應該只會在最後,前面可以可選的出現一些語句

好了,收集到了這些之後,我們最終的SQL注釋的語法也出來了:
復制代碼 代碼如下:
\-\-([^\'\r\n]{0,}(\'[^\'\r\n]{0,}\'){0,1}[^\'\r\n]{0,}){0,}$

這一下,四條SQL的注釋全匹配到了,正則表達式太強大了吧。

這個SQL語句有一個小小問題,就是後面不能有一個單的單引號存在,否則就會匹配有問題。(因為人們的習慣對於這種分隔符默認是成雙出現的,這個小問題其實也是可以忽略的)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved