正規表示式之一 TSQL注釋的查詢

2022-02-09 07:43:21 字數 1054 閱讀 1896

最近自己做了個小專案,涉及到了大量的正規表示式匹配和處理,在這裡也和大家分享一下。

我相信接觸過sql server資料庫的很多朋友都知道,它是以"--"開頭來進行注釋的,但你覺得匹配它真的很容易嗎?

讓我們來看一些例子:

--

獲取表的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]$

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

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

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

1. 以--開頭

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

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

好了,收集到了這些之後,我們最終的sql注釋的語法也出來了:

\-\-([^\'\r\n](\'[^\'\r\n]\')[^\'\r\n])$

這一下,四條sql的注釋全匹配到了,正規表示式太強大了吧。

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

T SQL中的正規表示式

t sql中的正規表示式 將這個udf儲存到你的資料庫中,並確定有授權來執行它。當然,你也得確保執行它的人有執行sp oa xx類擴充套件儲存過程的許可權。這個函式已確保正常執行,並且即便是和com物件一起使用,也還是挺快的。舉例使用正規表示式的乙個地方就是測試特殊字元。我們不搜尋所有的特殊字元,而...

正規表示式之我見 注釋

注釋就是對 的解釋和說明。目的是為了讓別人和自己很容易看懂,一看就知道這段 是做什麼用的。正確的程式注釋一般包括序言性注釋和功能性注釋。分類 語法 說明注釋 comment 這種型別的分組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀 正則的注釋語法 comment 例如 1 0 2 d 1...

正規表示式中的注釋

注釋 comment 小括號的另一種用途是通過語法 comment 來包含注釋。例如 2 0 4 d 200 249 25 0 5 250 255 01 d d?0 199 要包含注釋的話,最好是啟用 忽略模式裡的空白符 選項,這樣在編寫表示式時能任意的新增空格,tab,換行,而實際使用時這些都將被...