2014-06-30 12 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