Поиск всех вхождений шаблона в строке с помощью SQL SERVER QUERY - PullRequest
0 голосов
/ 18 марта 2019

Я хочу отфильтровать все вхождения шаблона в строке с помощью запроса SQL-сервера.Пример: "# Привет, мир! Нужно #filter the #tag" В этой строке нужно отфильтровать слова хештега ... Результат должен быть ... "#Hello" "#filter" "#tag"

Ответы [ 4 ]

0 голосов
/ 18 марта 2019

Если Шон Ланге прав и следует избегать зацикливания, вот еще один ответ, который будет работать без зацикливания:

declare @asdf varchar(100) = '#Hello world! Need to #filter the #tag'

SELECT 
LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS HashTag
FROM
(
SELECT CAST('<Records><Row>' + REPLACE(@asdf,' ','</Row><Row>') + '</Row></Records>' AS XML) AS x
)t
CROSS APPLY x.nodes('/Records/Row')m(n)
where LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)')))  like '#%'

Затем можно включить вышеуказанную логику в стандартную инструкцию SELECT, которая может быть применена к каждой строке.

0 голосов
/ 18 марта 2019

С помощью разделителя строк это довольно просто.Я использую сплиттер Джеффа Модена, который вы можете найти здесь .

declare @asdf varchar(100) = '#Hello world! Need to #filter the #tag'

select *
from dbo.DelimitedSplit8K(@asdf, ' ')
where Item like '#%'
0 голосов
/ 18 марта 2019

Пожалуйста, подтвердите, если это работает для вас:

declare @tempTable table (hashtag varchar(Max))
declare @asdf varchar(100) = '#Hello world! Need to #filter the #tag'
declare @i integer =0
declare @length integer = (select len(@asdf)-len(replace(@asdf,'#','')))

while (select @i)< @length
begin
    insert into @tempTable select substring(@asdf,charindex('#', @asdf),charindex(' ', @asdf))
    set @asdf = ltrim((select substring(substring(@asdf,charindex('#', @asdf),len(@asdf)),charindex(' ', @asdf)+1,len(@asdf))))
    set @i = @i+1
end

select HashTag from @tempTable
0 голосов
/ 18 марта 2019

С информацией, отображаемой в вопросе, вы можете сослаться на что-то вроде этого:

SELECT * FROM table_A WHERE column_A LIKE '#%'

Этот запрос даст вам все поля в столбце column_A из таблицы table_A с символом хештега

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...