为啥 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 不适用于不同的视图

为啥 scrollTo() 方法不适用于 iframe?

- 包含或 - 匹配多个值

为啥这种方法不适用于通过反应可视化快速排序?

Spring Data JPA 审计不适用于带有 @Modifying 注释的 JpaRepository 更新方法,为啥?

为啥 .append() 方法不适用于字符串,它们的行为不像列表?