sql-server - 在 T-SQL 中搜索 Varchar 和整数列

标签 sql-server tsql

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

//查询:

@SearchText VARCHAR(8000) = ''

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

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

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

最佳答案

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

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

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

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

关于sql-server - 在 T-SQL 中搜索 Varchar 和整数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16977916/

相关文章:

sql-server - '0' 附近的语法不正确。 (微软 SQL 服务器)

sql-server - SSDT : "Identifiers must include at least one name (for example, MyTable)"

sql - CASE 内的多个 ORDER BY

c# - 调用运行时间长的存储过程

tsql - 在TransactSQL中,是否可以创建一个采用可变数量的参数(可选参数)的函数?

sql - 如何使用 T-SQL 在数据库中的所有文本字段中搜索某些子字符串

java - Java 中 SQL Server PreparedStatement 的错误结果

sql-server - 为什么 SQL 中是 199.96 - 0 = 200?

mysql - 连接 2 个不相等的 sql 查询

sql-server - SQL Server : Maximum character length of object names