我已經通過Google和Stack Overflow進行了大量搜索,如果有答案,我還沒有能夠提出一個搜索查詢我正在尋找的答案。確定SQL Query是否具有命名參數的最佳方式
我正在構建一個函數模塊,用於在我的ASP.net網站中處理連接到Microsoft SQL Server數據庫並執行查詢的所有骯髒工作。我目前正在處理執行查詢的函數,並決定允許一個可選的函數參數,它是一個SQL參數數組。
在傳遞給它們的可選SQL參數的函數中,我想檢查傳遞的SQL查詢是否存在命名參數。如果在SQL查詢中有一個命名參數,請確保可選SQL參數確實通過。如果在SQL查詢中沒有命名參數,那麼確保沒有傳遞任何SQL參數。例如:
- SQL查詢=
SELECT * FROM MyTable WHERE ID = @TheID
→函數調用必須有SQL參數。 - SQL查詢=
SELECT GETDATE()
→函數調用不能有SQL參數。
我給大家出的問題有什麼是「搜索」是一個命名參數的SQL查詢字符串(不知道該參數的名稱)的最佳方式。我只是在字符串中搜索'@'字符時非常謹慎,因爲我在某處閱讀時可能會有一個以該字符命名的列(例如[[email protected]]
)。也許我可以使用正則表達式來搜索'=',然後搜索任意數量的空白,然後搜索'@'?
我會用「LIKE
將返回true。 '* @ *'或LIKE'%@%',具體取決於您的通配符運算符(此時SQL服務器通配符運算符會滑入我的腦海)編輯:對於asp.net,使用instr()函數 – Scotch 2013-02-22 01:49:20
使用'@@'作爲一些內置的系統函數的前綴 – 2013-02-22 07:40:21
感謝Damien爲了提醒這一點儘管在編寫的代碼中這不太可能發生,我很高興檢查完整性和可靠代碼的所有可能性! – 2013-02-22 21:38:06