使用正則表達(dá)式匹配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]*$
你會發(fā)現(xiàn),它連第二條的SQL也匹配到了,這是不對的??雌饋?,我們應(yīng)該排除"'"里面的, 我們再來改改:
\-\-[^\'\r\n]{0,}$
還是不對,這下雖然第二條的SQL沒有匹配,但連第三條的都不匹配了,看起來還是不對。
那到底怎么樣才能真正匹配到所有的SQL注釋呢?
首先我們來總結(jié)一下SQL注釋的一些特點:
1. 以--開頭
2. 注釋的內(nèi)容,應(yīng)該不會被包含在一對''之內(nèi)
3. 注釋應(yīng)該只會在最后,前面可以可選的出現(xiàn)一些語句
好了,收集到了這些之后,我們最終的SQL注釋的語法也出來了:
\-\-([^\'\r\n]{0,}(\'[^\'\r\n]{0,}\'){0,1}[^\'\r\n]{0,}){0,}$
這一下,四條SQL的注釋全匹配到了,正則表達(dá)式太強大了吧。
這個SQL語句有一個小小問題,就是后面不能有一個單的單引號存在,否則就會匹配有問題。(因為人們的習(xí)慣對于這種分隔符默認(rèn)是成雙出現(xiàn)的,這個小問題其實也是可以忽略的)
相關(guān)文章
SQL?Server數(shù)據(jù)庫生成與執(zhí)行SQL腳本詳細(xì)教程
為了方便可以把需要連續(xù)執(zhí)行的SQL語句寫到一個文本文件中,并且用.SQL作為擴展名,這種文件叫做SQL腳本文件,下面這篇文章主要給大家介紹了關(guān)于SQL?Server數(shù)據(jù)庫生成與執(zhí)行SQL腳本的相關(guān)資料,需要的朋友可以參考下2023-01-01SQL SERVER數(shù)據(jù)庫開發(fā)之存儲過程應(yīng)用
SQL SERVER數(shù)據(jù)庫開發(fā)之存儲過程應(yīng)用...2006-09-09SQL SERVER使用REPLACE將某一列字段中的某個值替換為其他的值
本節(jié)主要介紹了SQL SERVER使用REPLACE將某一列字段中的某個值替換為其他的值,需要的朋友可以參考下2014-08-08SQL Server2008數(shù)據(jù)庫導(dǎo)入導(dǎo)出兼容性處理方案
SQL Server 的高版本數(shù)據(jù)庫恢復(fù)到低版本則可能會有兼容性問題,下面為大家介紹的是如何解決此類問題2014-05-05比較詳細(xì)的完美解決安裝sql2000時出現(xiàn)以前的某個程序安裝已在安裝計算機上創(chuàng)建掛起的文件操作。
比較詳細(xì)的完美解決安裝sql2000時出現(xiàn)以前的某個程序安裝已在安裝計算機上創(chuàng)建掛起的文件操作。...2007-10-10sqlserver數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)操作詳解(圖)
本文主要介紹的是怎么使用Microsoft SQL Server Management Studio導(dǎo)入數(shù)據(jù),大家參考使用吧2014-01-01