[英]How to remap list of values from an array to another list of values in NumPy?
[英]How to search if a list contains values from another list TSQL
好吧,我對此進行了廣泛的研究,並嘗試了許多技術,但沒有成功。
我有一個名稱列表,我有一個位置列表。 某些位置中包含完整的名稱字符串。
我只想將其中包含名稱的位置拉出,並且我不想從%names%的硬編碼列表中進行檢查,因此需要可伸縮。 下面是我正在使用的工具(我不會每次都檢查現有的臨時表,真的不是很需要)
除所有最后查詢外,我最后都嘗試合並所有查詢
IF OBJECT_ID('tempdb..#ProviderList') IS NOT NULL
DROP TABLE #ProviderList
SELECT distinct
Station
,StaffName --first and last concatenated
,lastName
,ProviderID
--,[ProviderRole]
INTO #ProviderList
FROM --Omited--
Where PrimaryProviderSID in (Select distinct
PrimaryProviderSID
----
Where PrimaryPosition not like '%zz%'
AND PrimaryProviderID > 0)
AND [TerminationDate] is null
AND (InactivationDate is null)
Select LastName
INTO #LastName
from #ProviderList
/* Failed experiment
Declare @Names as Table(Name varchar(max))
Insert Into @Names Select LastName
from #ProviderList
--Select* From @Names
Failed experiment
*/
SELECT distinct [Many fields...],
LocationName
Into #LocationName
FROM ------
Where LocationName not like '%z%'
AND ---filtering criteria to make my list
---------------組合在一起的部分
我想從#LocationName中選擇Everyting,但僅從Names列表中包含ANY記錄的記錄,它們將只包含一個或不包含任何記錄
Select *
From #LocationName
Where #LastName in (LocationName)?
Where '%' + LastName + '%' ? --tried concatenation, i want a fuzzy search
Where #LocationName contains(LocationName, #LastName)? ---i know syntax is wrong but this has not proven to be the correct technique anyway
Where Exists(Select LastName from #LastName) --made no change but Not Exists returned nothing...
----------同事給我帶來了這個:
select lastname
from #LastName
Where charindex(LastName,
(SELECT STUFF((SELECT ',' + LocationName
FROM #LocationName
FOR XML PATH('')) ,1,1,'') AS Txt )
)>1
------但這僅是要給我們列出LocationName字段中包含的名稱的列表,我們也想提取Location Name
我知道這是一個漫長的過程,但我希望我相對清楚,至少在不需要做什么的情況下需要做什么。
我覺得我想創建一個數組,並分別比較每個Name值以查看它是否包含在LocationName中,然后如果是,則將其添加到新列表中。 那將是理想的
試試這個...
CREATE TABLE #NAMES (NAME VARCHAR(100))
CREATE TABLE #LOCATIONS (LOCATIONNAME VARCHAR(100))
INSERT INTO #NAMES
SELECT 'DAVE' UNION
SELECT 'BOB' UNION
SELECT 'JIMMY'
INSERT INTO #LOCATIONS
SELECT 'TODDS BOAT' UNION
SELECT 'MARYS HOUSE' UNION
SELECT 'DAVES HOTTUB' UNION
SELECT 'JIMMYS CRICKEY CLUB'
SELECT L.*
FROM #LOCATIONS L
CROSS APPLY #NAMES N
WHERE CHARINDEX(N.NAME, L.LOCATIONNAME)>0
也許這確實值得一個單獨的答案,而不僅僅是對JiggsJedi的評論。
也可以使用相關子查詢來完成。 兩種示例數據上的執行計划都是相同的。
使用來自JiggsJedi的樣本數據。
SELECT L.*
FROM #LOCATIONS L
WHERE EXISTS (SELECT 1
FROM #NAMES N
WHERE CHARINDEX(N.NAME, L.LOCATIONNAME) > 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.