【问题标题】:SQL Query to search by name(containing combination of two or more word)按名称搜索的 SQL 查询(包含两个或多个单词的组合)
【发布时间】:2015-04-22 11:12:13
【问题描述】:

当我使用搜索时

....LIKE '%" + txtName.Text + "%'.....

然后它返回所有包含txtName 的行。像这样的名字是可以的

  • 比杰或

  • 比杰·库马尔。

    并且行包含类似的数据

  • 比杰,

  • 比杰库马尔库什,

  • 比杰库什。

在这种情况下,当使用txtName (如Bijay Kush)进行搜索时,它应该返回Bijay kumar kushBijay Kush。但没有得到这样的输出。使用名字和姓氏搜索而不提供中间名时为空。这里txtName是用于搜索名称的全名文本框。我想知道我在哪里犯了错误。任何帮助将不胜感激。在此先感谢。我正在使用这种类型的查询,如果没有如上所述的中间名进行搜索,则不会返回结果。

...
if (!String.IsNullOrEmpty(txtName.Text) && !String.IsNullOrWhiteSpace(txtName.Text))
       SearchSqlDataSource.SelectCommand += " AND (New_Employees.Full_Name LIKE '%" + txtName.Text + "%' OR New_Employees.Full_Name LIKE '%" + txtName.Text + "%')

【问题讨论】:

  • 不要使用字符串连接来构建你的 sql 查询。而是使用 sql-parameters 来防止 sql 注入和其他问题。
  • 感谢您让我了解 SQl 注入 @TimSchmelter

标签: sql asp.net database


【解决方案1】:

我可能建议用通配符替换所有空格。您可以在应用程序或数据库中执行此操作。假设底层数据库是SQL Server,下面是数据库代码:

WHERE New_Employees.Full_Name LIKE REPLACE('%" + txtName.Text + "%', ' ', '%')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2015-09-20
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多