sql - 如何在使用 LIKE 运算符的地方使用 split 函数

标签 sql sql-server

我想在包含 LIKE 运算符的查询中使用函数 split。

 SELECT * FROM Tbl_News n WHERE n.Date >= @Fromdate AND n.Date <= @Todate 
 AND n.Title LIKE '%' + (SELECT Item FROM dbo.SplitString(@key, ',')) + '%' 

n.Title 类型为 nvarchar。 但引发此错误:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

最佳答案

尝试使用APPLY:

SELECT n.*
FROM Tbl_News n CROSS APPLY
     (SELECT Item FROM dbo.SplitString(@key, ',')) s(item)
WHERE n.Date >= @Fromdate AND
      n.Date <= @Todate AND 
      n.Title LIKE '%' + s.item + '%' ;

如果您关心性能,您可以考虑对标题使用全文索引。

关于sql - 如何在使用 LIKE 运算符的地方使用 split 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721924/

相关文章:

java - 用于数据库调用的Spring Boot并发问题

连接两个表的前缀和非前缀字段的 SQL 查询

mysql - 如何使用公共(public)字段将表中一个字段的值添加到不同表中的另一字段?

sql-server - 在 SQL 中透视具有多列的表

mysql - 如何使用 SQL 获取两个表的所有 3 个组件的计数?

sql - SQL注入(inject)攻击后更新所有SQL Server列

java - SQL - 如何使用一个 SQL 查询返回多行?

sql-server - 如何使用分号分隔符将 Excel (xlsm) 保存为 CSV 文件?

asp.net - 使用哪一个?数据库中的 EAV 或 Blob?

c# - 对 .NET SQL 程序集进行逆向工程