我为用户构建了一个简单的用户界面来查询我们的SQL Server数据库。用户界面只是一个人姓名的输入字段。该字段的输入将用于搜索我们数据库中的3个字段。到目前为止的查询看起来像这样:
SELECT [Id], [Url], [PersonName], [BusinessName], [DOB], [POB], [Text]
FROM dbo.DataAggregate
WHERE CONTAINS([PersonName], 'NEAR((john, doe), 2, FALSE)')
OR CONTAINS([BusinessName], 'NEAR((john, doe), 2, FALSE)')
OR CONTAINS([Text], 'NEAR((john, doe), 2, FALSE)')
以上假设用户在John Doe上查询。对NEAR的要求与我们字段中数据的格式不一致有关,但这与此问题无关,只是一个FYI。
现在,我已经被指示在UI中添加另外4个输入字段,以允许用户进一步定制他们的查询。这些字段已存在于DB记录中。我的问题是如何在使用UI中的其他字段时添加上述查询?我只是简单地向它添加几个AND语句或者向它添加OR语句吗?
让我举个例子来帮助你帮助我:
User Query:
Person Name: John Doe
DOB: 01/01/1900
Address: 123 Main St
POB: USA
Occupation: Worker
如何添加到查询中以包含其他4个输入字段的数据?最初,为了处理填充哪些输入字段以及哪些不是,我在查询中是否需要IF语句?
其他4个输入字段中的每个值都需要在自己的字段中搜索,再加上文本字段 - 即 - DOB需要在DOB字段和Text字段中搜索 - 地址需要在地址字段和文本字段中搜索 等
似乎必须有一种更有效的方法来构建这样的查询,而不是基本上有5个部分类似于我的上述查询,由IF / AND / OR分隔。
谢谢。
答案 0 :(得分:0)
如果您使用参数,您可以使用此技巧获得未填充的输入
Where
((@input1 is null) or (somefield = @input1))
Or / And
...
这会很快变得凌乱,他们下周会提出更多的投入。
其他选项
Grid with Filter capability.
Data dump for say Excel
Building the query programatically, with parameters.