У меня есть следующие WHERE
заявления в процедуре SQL хранится, что я проверяю на таблицу, которая хранит данные в виде XML:Как искать определенную строку с помощью LIKE команды
WHERE
(
CAST ([content_html] AS XML).value('(/root/Physicians/specialty/a/text())[1]', 'varchar(max)') LIKE '%' + @strService + '%'
OR
CAST ([content_html] AS XML).value('(/root/Physicians/specialty2/a/text())[1]', 'varchar(max)') LIKE '%' + @strService + '%'
OR
CAST ([content_html] AS XML).value('(/root/Physicians/specialty3/a/text())[1]', 'varchar(max)') LIKE '%' + @strService + '%'
OR
CAST ([content_html] AS XML).value('(/root/Physicians/specialty4/a/text())[1]', 'varchar(max)') LIKE '%' + @strService + '%'
OR
CAST ([content_html] AS XML).value('(/root/Physicians/specialty5/a/text())[1]', 'varchar(max)') LIKE '%' + @strService + '%'
OR
CAST ([content_html] AS XML).value('(/root/Physicians/specialty6/a/text())[1]', 'varchar(max)') LIKE '%' + @strService + '%'
)
strService
отправляемый из передняя часть моего кода, за которым выполняется хранимая процедура.
Каждый из операторов OR
ссылается на каждое текстовое поле в документе XML.
Например, если я посылаю @strService
= Urology
поиски запроса для Urology
и Neurology
, потому что Urology
также в Neurology
Как я могу проверить, если содержание равно @strService ИЛИ, если слово существует где-то внутри содержимого с не-буквами вокруг него или если это в самом начале или в самом конце содержимого с небуктом, следующим или предшествующим соответственно.
Вот пример:
У меня есть следующие данные:
Pediatric Urology
Urology
Neurology
У меня есть следующие LIKE
заявление:
LIKE 'Urology'
= only Urology is displayed
LIKE '% Urology
= nothing is displayed
LIKE '%[^a-zA-Z]Urology'
= only Pediatric Urology is displayed
Я хотел бы показать Pediatric Urology
и Urology
в этом случае.
До тех пор, пока слово существует с пространством перед ним, я хотел бы показать.
Какие СУБД вы используете? MySQL, SQL-сервер, Oracle, PostgreSQL, ...? – Barranka
@Barranka SQL Server – SearchForKnowledge
'LIKE '% Урология ничего не отображает, потому что отсутствует закрывающая одинарная кавычка. Кроме того, вам нужно «ИЛИ» эти утверждения («СОДЕРЖАНИЕ« Урология »ИЛИ СОДЕРЖАНИЕ, КАК« Урология »ИЛИ СОДЕРЖАНИЕ, КАК« Урология% ») –