給出一個SQL字符串像
CREATE VIEW TestView AS
SELECT value1, value2
FROM TABLE_0
UNION
(SELECT * FROM TABLE_2) AS value1
,value2
FROM TABLE_12
UNION
SELECT * FROM TABLE_3
(小寫)
和String一樣
string[] tables = new string[]{"table_1", "table_2", "table_3"}
現在,我做了一個數組:
if (strViewDefinition.Contains(strObjectName)) // aaaaargh
爲表中的每個strObjectName檢查視圖是否依賴於此對象。
但這未能對table_12(和循環依賴的結果),例如,因爲表中包含「TABLE_1」。 Aaargh。
我需要一個正則表達式,可以檢查視圖定義包含一個函數名,表值函數或另一種觀點認爲...
( 對於 System.Text.RegularExpressions.Regex.IsMatch檢查( )
我的審判是:
string whateverneedsescaping= System.Text.RegularExpressions.Regex.Escape(@"+-*\/%=,\n\r");
string fieldsep = @"[\s\n\r," + whateverneedsescaping+ "]*";
string strPattern = fieldsep + "VIEW/FUNCTION_NAME" + fieldsep;
但是失敗了,再加上它沒有考慮對象名稱加上方括號,如
"[TABLE_NAME]"
任何人都可以幫忙嗎?
@馬克·班尼斯特:是的,這是SQL-Server中。但SQL-Server 2005. Plus也適用於其他Db系統,因此不建議我使用SMO(SQL 2005上的bug也是順便說一句);-) – 2012-04-03 09:02:54