在 SQL Server 中,我有一個表,其中包含我想要回傳串列的醫生辦公室(提供者)的名稱。如果這些辦公室名稱中的任何一個包含在第二個表(關鍵字)中找到的任何關鍵字,我想從串列中回傳該提供者記錄。我有一個作業正常的查詢,但我的問題是......
我需要將提供者名稱中的整個單詞與關鍵字匹配,以排除它。如果關鍵字只是醫生辦公室名稱中包含的單詞的一部分,則不應排除該記錄。我不知道該怎么做。
這是一個例子:
IF OBJECT_ID(N'tempdb..#Keywords') IS NOT NULL
BEGIN
DROP TABLE #Keywords
END
GO
IF OBJECT_ID(N'tempdb..#Providers') IS NOT NULL
BEGIN
DROP TABLE #Providers
END
GO
CREATE TABLE #Keywords (KeywordId INT, Keyword varchar(50))
CREATE TABLE #Providers (ProviderId INT, ProviderName varchar(100))
INSERT INTO #Keywords(KeywordId, Keyword) VALUES (1, 'ACUPUNCTURE')
INSERT INTO #Keywords(KeywordId, Keyword) VALUES (2, 'CHILD & ADOLESCENT PSYCHIATRY')
INSERT INTO #Keywords(KeywordId, Keyword) VALUES (3, 'Ent')
INSERT INTO #Keywords(KeywordId, Keyword) VALUES (4, 'VA')
INSERT INTO #Providers(ProviderId, ProviderName) VALUES (111,'Family Practice of Pennsylvania')
INSERT INTO #Providers(ProviderId, ProviderName) VALUES (222,'Dr. Smiths Acupuncture')
INSERT INTO #Providers(ProviderId, ProviderName) VALUES (333,'Patient First')
INSERT INTO #Providers(ProviderId, ProviderName) VALUES (444,'Chicago Child & Adolescent Psychiatry')
INSERT INTO #Providers(ProviderId, ProviderName) VALUES (555,'Manhattan Family Practice')
INSERT INTO #Providers(ProviderId, ProviderName) VALUES (666,'Dr. Levys Oncology VA')
SELECT * FROM #Keywords
select * FROM #Providers
SELECT p.*
FROM #Providers p
WHERE NOT EXISTS (SELECT 1
FROM #Keywords k
WHERE p.ProviderName LIKE CONCAT('%', k.Keyword, '%'))
在上面的 sql 中,應排除包含 #Keywords 表中這 4 個值中的任何一個的任何提供商辦公室。因此,由于 ProviderId 的 222、444 和 666 有匹配的關鍵字,所以應該排除它們,我應該回傳以下 3 條記錄:
- 111,賓夕法尼亞州的家庭診所
- 333,患者至上
- 555,曼哈頓家庭診所
但是,我的問題是,如果您運行上面的腳本,您會注意到只回傳一條記錄。這是因為 ProviderId 111 在“Pennsylvania”中包含“VA”,而 ProviderId 333 在“Patient”中包含“ENT”。
如何重新處理我的查詢以確保我的關鍵字與提供商辦公室名稱中的整個單詞匹配,而不僅僅是一個單詞的一部分?
uj5u.com熱心網友回復:
您只需要比較整個單詞 - 因此像“Ent”這樣的關鍵字不會在一個單詞中匹配。
通過在關鍵字的兩側包含一個空格并且與名稱相同,以下內容是否對您有用:
where not exists (
select 1 from #Keywords k
where Concat(' ',p.ProviderName,' ') like Concat('% ', k.Keyword, ' %')
)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452416.html
