有没有办法在选择查询中组合多个字段?

时间:2014-03-29 16:42:58

标签: vb.net select field where

这是我在vb.net中使用的查询

select *
from tbl_patientinfo
where fname like '%" & txtsearchquery.Text & "%'
    or mname like '%" & txtsearchquery.Text & "%'
    or lname like '%" & txtsearchquery.Text & "%' 

我知道它很长,我想知道的是有没有办法缩短它。我尝试过IN,但它不允许多列,只有搜索变量。 LIKE也不顺利。我正在寻找一种方法让我的代码看起来像这样:

select *
from tbl_patientinfo
where (fname, mname, lname) like '%" txtsearchquery.text "&'

2 个答案:

答案 0 :(得分:0)

尝试连接字段。 在MySQL中你可以这样做:

select *
from tbl_patientinfo
where concat(fname, mname, lname) like '%" & txtsearchquery.text & "%'

答案 1 :(得分:0)

您的查询不是有效的VB.NET LINQ。正如另一位成员所建议的,它可能是MySQL。如果是这种情况,请相应调整问号。

无论使用哪种查询语言,都有像这样的WHERE条件没有任何问题。只需确保使用参数,以避免SQL注入。你可以有一个for循环添加LIKE条件到列表。这就是我的意思:

Dim sql = "select * from tbl_patientinfo where "
Dim conditions As New List(Of String)
For Each fieldName As String In {"fname", "mname", "lname"}
  conditions.Add(fieldName & " LIKE '%" & txtsearchquery.Text & "%'")
Next
sql &= String.Join(" OR ", conditions.ToArray())

这样可以保持代码干燥(避免重复),并且不依赖于供应商。

如果你决定使用参数,应该很容易修改上面的代码。