我正在使用動態SQL來創建將執行的'SELECT'SQL語句。在我創建的SQL語句中,我想使用'LIKE'運算符,但由於它使用反向逗號'',它與'SELECT'語句開始時使用的引號相沖突。在WHERE子句中添加LIKE運算符(動態SQL)
SET @sql = 'SELECT * FROM LogTable WHERE Application LIKE ' + @ApplicationName + ' ;'
假設 '@ApplicationName = TestApp',上述動態SQL '@sql' 變量會產生以下SQL語句:作爲引號不
SELECT * FROM LogTable WHERE Application LIKE TestApp ;
這會導致錯誤存在於'TestApp'周圍。如何在動態SQL中創建引用逗號,以允許使用「LIKE」運算符?如何創建SQL語句如下:
SELECT * FROM LogTable WHERE Application LIKE 'TestApp' ;
即使你得到那個工作,小心鮑比表。如果他曾經搜索過'%TestApp%'; DROP TABLE LogTable; SELECT'你只是SQL Inject Attacked',那麼你可能會得到「意想不到的結果」!對於所有事情的熱愛,請不要使用此結構,請使用參數化查詢*(AKA Prepared Statements)*。 – MatBailie
爲什麼你使用沒有通配符的搜索?如果它像這樣簡單的事情,爲什麼甚至首先使用動態SQL? –
我打算實施一個MVC應用程序,其中應該有一個預定義值的下拉列表。選擇這些值應該改變@ApplicationName。我打算使用'LIKE',這樣當選擇空字段時,它會將'LIKE'運算符搜索項替換爲'%'以帶來全部。 – Dev