2013-03-15 48 views
0

我想寫一個SQL選擇只記錄,如果沒有匹配的結束括號 例如,如果列"TEXT_DATA"'tes(ting(sql)select''tes(ting(sql)sel)ect'然後,因爲它缺少一個select語句應該只'tes(ting(sql)select'返回匹配右大括號")"SQL Server的正則表達式

可能有一個或多個缺失的大括號。

回答

0

不使用正則表達式,但它會做的工作:

Select text_data as [TEXT_DATA], 
    len(text_data)-len(replace(text_data, '(', '')) as [CountOpen], 
    len(text_data)-len(replace(text_data,')','')) as [CountClose] 
    into #temp 
    from table 

Select TEXT_DATA from #temp where CountOpen<>CountClose 
+0

這隻會計算括號的出現次數,它不會檢查它們是否匹配(用close打開)。即「))sql((」這也將是與這種解決方案vaild。 – 2013-03-16 03:43:22

0

SQL Server不具有複雜的正則表達式支持。你不能使用TSQL來檢查。您需要編寫自定義代碼。