Sql server 获取SQL Server中包含类似单词的表中的单词

Sql server 获取SQL Server中包含类似单词的表中的单词,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我在一列中有两种类型的字符串 DECLARE @t table(parameter varchar(100)) INSERT @t values ('It contains eact01' ), ('It contains preact01') 我正在尝试获取包含单词“eact01”的字符串 我的问题是,使用下面的SELECT,我还得到了包含“preact01”的变量,因为它包含“eact01” SELECT * FROM @t WHERE parameter LIKE '%eact01%'

我在一列中有两种类型的字符串

DECLARE @t table(parameter varchar(100))

INSERT @t values
('It contains eact01' ),
('It contains preact01')
我正在尝试获取包含单词“eact01”的字符串

我的问题是,使用下面的SELECT,我还得到了包含“preact01”的变量,因为它包含“eact01”

SELECT * FROM @t WHERE parameter LIKE '%eact01%'

如何仅获取包含“eact01”的行?

为此,您需要一个字符串拆分器。这里有一张是从亚伦·伯特兰的作品中摘取的:


你需要一个字符串拆分器。这里有一张是从亚伦·伯特兰的作品中摘取的:


最简单的方法就是添加空间:

SELECT * FROM @t WHERE parameter LIKE '% eact01%' or parameter LIKE 'eact01%'

最简单的方法就是添加空间:

SELECT * FROM @t WHERE parameter LIKE '% eact01%' or parameter LIKE 'eact01%'

这应该可以找到所有的组合,任何不是字母或数字的字符都可以将其视为一个spit字符或一个新词

SELECT * 
FROM @t
WHERE
  parameter like '%[^0-9a-z]eact01'
  or parameter like '%[^0-9a-z]eact01[^0-9a-z]%'
  or parameter like 'eact01[^0-9a-z]%'
  or parameter = 'eact01'

这应该可以找到所有的组合,任何不是字母或数字的字符都可以将其视为一个spit字符或一个新词

SELECT * 
FROM @t
WHERE
  parameter like '%[^0-9a-z]eact01'
  or parameter like '%[^0-9a-z]eact01[^0-9a-z]%'
  or parameter like 'eact01[^0-9a-z]%'
  or parameter = 'eact01'
试试这个-

select *
from @t 
where 
    parameter='eact01' 
OR  parameter like '%[^0-9a-z]eact01%' 
OR  parameter like 'eact01[^0-9a-z]%' 
OR  parameter like '%[^0-9a-z]eact01[^0-9a-z]%'
试试这个-

select *
from @t 
where 
    parameter='eact01' 
OR  parameter like '%[^0-9a-z]eact01%' 
OR  parameter like 'eact01[^0-9a-z]%' 
OR  parameter like '%[^0-9a-z]eact01[^0-9a-z]%'