为啥 CONTAINS 方法不适用于 REPLACE
Posted
技术标签:
【中文标题】为啥 CONTAINS 方法不适用于 REPLACE【英文标题】:Why CONTAINS method doesn't work with REPLACE为什么 CONTAINS 方法不适用于 REPLACE 【发布时间】:2020-09-25 10:28:06 【问题描述】:我正在使用 SQL Server 2014,并尝试在 CONTAINS
方法中使用 REPLACE
方法执行查询,如下所示:
SELECT *
FROM A
WHERE CONTAINS(Name, REPLACE('abcd', 'a', 'b'))
但是查询返回错误
“REPLACE”附近的语法不正确。
我怎样才能正确地做到这一点?
【问题讨论】:
“abcd”是列还是静态值? 双引号字符不是字符串分隔符——这是第一个问题。但是您的查询几乎没有逻辑意义,因此您的示例可能与您的实际问题有很大不同。 【参考方案1】:你可以这样写:
declare @param nvarchar(100)='abcd';
set @param= REPLACE(@param,'a','b');
SELECT *
FROM PersonAddress
WHERE CONTAINS(FullName, @param)
但首先,你需要这样做
【讨论】:
【参考方案2】:试试cte
with cte as
(
select
*
from A
where REPLACE('abcd', 'a', 'b') as col
)
select
*
from cte
where contains(col, name)
【讨论】:
以上是关于为啥 CONTAINS 方法不适用于 REPLACE的主要内容,如果未能解决你的问题,请参考以下文章
CGRect Contains Point 不适用于不同的视图
Spring Data JPA 审计不适用于带有 @Modifying 注释的 JpaRepository 更新方法,为啥?