2012-11-09 41 views
0

我有存儲這樣的過程的TSQL:?字符SP單字符通配符

ALTER PROCEDURE [dbo].[SearchEntityDataNew] 
@SearchText varchar(100) = '*' 
AS 
BEGIN  

    IF CHARINDEX('*', @SearchText) = 0 
     SET @SearchText = '%' + @SearchText + '%' 
    ELSE 
     SET @SearchText = REPLACE(@SearchText, '*', '%') 

    SELECT 'Entity' as pagetype,EntityID,EntityData,EntityDataID 
    FROM EntityData 
    WHERE EntityData LIKE @SearchText 
    union all 
    SELECT 'Property' as pagetype,PropertyID,PropertyValue,EntityDataID 
    FROM EntityDataProperty 
    WHERE PropertyValue LIKE @SearchText 
END 

我希望允許它?這將等於_運營商。

我該如何允許?這樣如果用戶輸入t_,那麼返回'to'。如果用戶輸入_t,那麼返回'It'。

+0

如果只是一個字符,您可以使用通配符(匹配一個字符)運算符:http://msdn.microsoft.com/en-us/library/ms174424.aspx – dash

+0

我需要添加一個字符通配符上面的存儲過程,以便如果用戶輸入t?那麼如果用戶輸入't%',則返回'to',然後返回並返回兩者。 – DotnetSparrow

回答

1

您已經與%取代*,所以只需更換?_@SearchText變也。

+0

下劃線是這裏走的路,+1。作爲參考,這裏是關於LIKE的文檔:http://msdn.microsoft.com/en-us/library/ms179859.aspx –