如何使用 contains 来查找包含空格的关键字?
Posted
技术标签:
【中文标题】如何使用 contains 来查找包含空格的关键字?【英文标题】:How can I use contains to look for keyword including a space? 【发布时间】:2019-05-29 21:19:21 【问题描述】:我想使用contains
搜索一个左右两边都有一个空格的单词。但它不起作用..
SELECT *
FROM mytable
WHERE Contains(name, ' Hertz ');
任何帮助表示赞赏..
【问题讨论】:
我不太确定您是否可以使用CONTAINS
来搜索结尾字符。您可以使用通配符 * (CONTAINS(name, '" *"Hertz')
) 搜索前缀。您可能需要添加一个附加子句来验证最后一个字符是否为空格。
对于所有回答的人,OP 要求CONTAINS
使用全文索引并且行为不同于LIKE
。
您可以将 where 条件写为 - WHERE a.name like ' %% '
检查我的答案。
@Janna 你可以在 dba.stackexchange.com 上发帖试试运气
【参考方案1】:
你可以试试这个
SELECT a.name
FROM mytable a
WHERE a.name like ' %% '
或
SELECT a.name
FROM mytable a
WHERE a.name like' % '
你可以找到现场演示Demo here
【讨论】:
【参考方案2】:试试这个
Select * from mytable where replace(name,' ','')='Hertz'
您还可以使用ltrim
和rtrim
在运行时删除空格以匹配名称值。
【讨论】:
【参考方案3】:如果您使用 like 运算符,则无需在其之间留空格,如下所示
select * from mytable where name like '%her%'
如果你想要有空格的数据,你可以像下面这样使用
select * from mytable where name like '_%hertz%_'
如果我们使用下划线,它将跳过特定的位置元素并搜索数据。
【讨论】:
【参考方案4】:要搜索包含空格,您需要将表达式用双引号括起来,例如:
SELECT *
FROM mytable
WHERE CONTAINS(name, '" Hertz "');
当然这也可以用 LIKE 来写(虽然在处理大数据集时效率会低一些):
SELECT *
FROM mytable
WHERE name LIKE '% Hertz %');
【讨论】:
【参考方案5】:您可以 LTRIM RTRIM 列并且可以获取值。
create table #temp
(
name varchar(50)
)
insert into #temp values(' hertz')
insert into #temp values('hertz ')
insert into #temp values('hertzx')
insert into #temp values('hertz')
select * from #temp where LTRIM(RTRIM(name)) like '%hertz%'
如果您想在查询下方的开始或结束使用中搜索它是否有空格。
select * from #temp where name like ' %'
select * from #temp where name like '% '
【讨论】:
【参考方案6】:你可以试试这个
SELECT *
FROM mytable
WHERE name Like '% Hertz %'
【讨论】:
【参考方案7】:尝试如下。
SELECT *
FROM mytable
WHERE name LIKE '% Hertz %'
Learn more about like operator
【讨论】:
【参考方案8】:试试这个:
SELECT *
FROM mytable
WHERE name=' Hertz '
如果赫兹只是一个例子,你可以使用:
SELECT *
FROM mytable
WHERE name like ' % '
这将返回所有在第一个和最后一个位置带有空格的名称
【讨论】:
以上是关于如何使用 contains 来查找包含空格的关键字?的主要内容,如果未能解决你的问题,请参考以下文章
当有前导空格时,为啥 Pandas series.str.contains 方法无法检测到匹配?