3

我的应用程序中有一个搜索功能,可以搜索特定列的字符串值。搜索文本作为参数传递给过程。现在我必须在另一列中搜索,该列是另一个表中的整数。输入参数是一个,但现在我必须在两列中搜索并根据它返回结果。

//询问:

@SearchText VARCHAR(8000) = ''

SELECT DISTINCT Id, TransactionId, wfdFieldValue 
where (wfdFieldValue LIKE '%' + @SearchText + '%' OR @SearchText = '')

在上面的查询中,我必须在 where 条件中包含 TransactionId。因此,如果用户使用 TransactionId 或 Fieldvalue 进行搜索,查询将返回结果。

注意: TransactionId 是一个整数数据类型。

4

2 回答 2

3
SELECT DISTINCT Id, TransactionId, wfdFieldValue 
where wfdFieldValue LIKE '%' + @SearchText + '%' 
OR @SearchText = '' 
OR CAST(TransactionId AS VARCHAR(50)) LIKE '%' + @SearchText + '%' 

演员应该解决它,但我会首先考虑可能的设计改进。

于 2013-06-07T06:56:21.150 回答
3

如果我理解正确,您需要在任一列中点击以使该行显示在搜索结果中。在这种情况下,您需要一个简单的OR;

SELECT DISTINCT Id, TransactionId, wfdFieldValue 
FROM bop
WHERE @SearchText='' OR 
       wfdFieldValue LIKE '%' + @SearchText + '%' OR 
       TransactionId LIKE '%' + @SearchText + '%'

(您可以LIKE立即在整数列上使用,而无需手动转换。)

值得注意的是,这种带有前导的通配符搜索%不会以最佳方式使用索引,随着表的增长,这种查询的性能很可能不会很好。

于 2013-06-07T07:07:35.220 回答