SQL Like语句:无法将char值转换为money。 char值的语法不正确

时间:2013-01-10 21:59:55

标签: c# sql-server-2008 tsql exception-handling ado.net

我有一个允许用户在我们网站上搜索内容的文本框,这里是要传递的c#代码:

string search = Server.HTMLDecode(userEnteredSearchText);
SqlCommand comm = new SqlCommand("SELECT data FROM database WHERE (Title LIKE @search) " 
comm.Parameters.Add(new SqlParameter("search", String.Format("%{0}%", search)));

我之前从未见过这个错误:

  

无法将char值转换为金钱......

但如果用户输入空格,它就会消失。我通过它调试,似乎可能导致它的是,如果search =“”,那么param将是%%?似乎有时如果用户输入足够的空格(即搜索是“”),那么页面不会崩溃?但我不确定问题是什么。

更新: 不确定这个问题究竟是什么,但我通过使用文本框的RequiredFieldValidator来修复它。

2 个答案:

答案 0 :(得分:1)

@Kevin,为什么不检查用户是否输入“”?然后,如果用户输入“”,则在将其输入发送到数据库之前给他们一个错误来修复他们的输入。

答案 1 :(得分:0)

您需要将money值转换为string。试试这个;

SqlCommand comm = new SqlCommand("SELECT CAST(Result AS VARCHAR(MAX)) WHERE (Keyword LIKE @search) "