首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找并显示列表中匹配的子字符串

查找并显示列表中匹配的子字符串
EN

Stack Overflow用户
提问于 2020-01-04 20:07:20
回答 4查看 63关注 0票数 0

请帮助我获得以下关于SQL的输出。

表AnimalQueries包含名为OrignialString的列。

OriginalString将如下所示:

with cat pain chat to a vet online help dog whisperer ask vet online free hamster treat

我希望输出如下所示

代码语言:javascript
复制
OriginalString           Animal
with cat pain             Cat
chat to a vet online      Vet
help dog whisperer        Dog
ask vet online free       Vet
hamster treat             Hamster
代码语言:javascript
复制
Declare @Animal table (Animal varchar(200))
insert into @Animal(Animal)
    values('dog','cat','vet','hamster')
SELECT OriginalString, Animal from AnimalQueries
EN

回答 4

Stack Overflow用户

发布于 2020-01-04 20:15:09

我认为应该行得通:

代码语言:javascript
复制
SELECT 
     OriginalString, 
     ( SELECT TOP(1) Animal FROM @Animal WHERE OriginalString LIKE '% ' + Animal  + ' %'  )

FROM AnimalQueries
票数 0
EN

Stack Overflow用户

发布于 2020-01-04 20:19:01

在ON子句中需要一个join和LIKE运算符:

代码语言:javascript
复制
CREATE TABLE AnimalQueries
    ([OriginalString] varchar(20))
;

INSERT INTO AnimalQueries
    ([OriginalString])
VALUES
    ('with cat pain'),
    ('chat to a vet online'),
    ('help dog whisperer'),
    ('ask vet online free'),
    ('hamster treat')
;

Declare @Animal table (Animal varchar(200))
insert into @Animal(Animal) values('dog'),('cat'),('vet'),('hamster');

select aq.OriginalString, a.Animal
from AnimalQueries aq left join @Animal a
on ' ' + aq.OriginalString + ' ' like '% ' + a.Animal + ' %'

通过连接OriginalStringAnimal列前后的空格,可以确保代码在OriginalString中查找的是整个单词,而不是单词的一部分。

请参阅demo

结果:

代码语言:javascript
复制
> OriginalString       | Animal 
> :------------------- | :------
> with cat pain        | cat    
> chat to a vet online | vet    
> help dog whisperer   | dog    
> ask vet online free  | vet    
> hamster treat        | hamster
票数 0
EN

Stack Overflow用户

发布于 2020-01-04 20:35:06

您可以对SELECT使用此查询

代码语言:javascript
复制
SELECT *
FROM animallist A
LEFT JOIN  orginalstring O ON CHARINDEX(A.animal, O.orginalstring) > 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59590485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档