添加到此T-SQL查询的语法

时间:2017-04-05 22:49:14

标签: sql sql-server tsql

我为用户构建了一个简单的用户界面来查询我们的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分隔。

谢谢。

1 个答案:

答案 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.