2014-06-30 112 views
0

我需要嘗試和部分搜索用戶,現在,我的代碼只能根據EXACT用戶名查找結果。我怎樣才能做到這一點?SQL部分搜索用戶

我的代碼可以在下面找到,請注意我使用「@ 0」,這似乎阻止我使用%@ 0%。

Here's my code: 
@{ 
    Layout = "~/Admin/_SiteLayout.cshtml"; 

    var db = Database.Open("MikZeRCoding2"); 
    var userSearchQuery = "SELECT * FROM [Users] WHERE UserName = @0"; 

    var UsernameSearch = ""; 
    var ErrorMessage = ""; 
    var searchString = Request.Form["search-username"]; 

    if (IsPost) { 
     UsernameSearch = Request.Form["search-username"]; 

     if (UsernameSearch.IsEmpty()) { 
      ErrorMessage = "You didn't search for anything."; 
     } 

     if (!UsernameSearch.IsEmpty() && db.QueryValue(userSearchQuery, UsernameSearch) == null) { 
      ErrorMessage = "No results for '" + searchString + "' were found..."; 
     } 

     if (searchString == "bitch") { 
      ErrorMessage = "Bitch spotted in-front of your pc monitor."; 
     } 

     else { 

     } 
    } 
} 

<form method="post" action=""> 
    <div class="input-group"> 
     <input type="text" name="search-username" placeholder="Search for a user" class="form-control" /> 
     <span class="input-group-btn"> 
      <button class="btn btn-default glyphicon glyphicon-search" type="button"></button> 
     </span> 
    </div> 
    <input type="submit" value="Search" /> 

    @foreach(var user in db.Query(userSearchQuery, UsernameSearch)) { 
     <a href="@Href("~/Admin/Accounts/User", user.UserId)"><span>[ @user.UserId ]</span> @user.UserName</a> 
    } 
    @if(!ErrorMessage.IsEmpty()) { 
     <div class="alert alert-danger">@ErrorMessage</div> 
    } 
</form> 

回答

0

我想你應該能夠做到:

var userSearchQuery = "SELECT * FROM [Users] WHERE UserName LIKE '%' + @0 + '%'"; 

編輯:

要回到什麼時候@0是空的:

var userSearchQuery = "SELECT * FROM [Users] WHERE UserName LIKE '%' + @0 + '%' and @0 <> ''"; 
+0

的實際工作,謝謝! !然而,不幸的是,當我這樣做,我去搜索框上的網頁,它似乎輸出每個用戶,然後當我搜索像「使用」時,它只出現「用戶」,如果你得到我的意思是:P有什麼辦法解決這個問題? – Mikkel

+0

@ user3250722。 。 。你是說當搜索字符串爲空時,它將返回所有用戶。它應該返回什麼? –

+0

是的,我知道,這是我愚蠢。但我一直在試圖解決這個問題,所以當頁面加載時它不會自動搜索任何內容,但我似乎無法弄清楚如何實際執行此操作。 – Mikkel