--Create/Populate [#Filters]:
if object_id('tempdb..[#Filters]','U') is not null drop table [#Filters]
go
create table [#Filters]
(
[filterid] int
,[filtertype] varchar(50)
,[filtername] varchar(50)
,[filtercriteria] nvcarchar(max)
)
go
set nocount on
insert [#Filters] select 1, 'Worklist', 'WL1', 'ID_SlotAssignmentFolder=1'
insert [#Filters] select 2, 'Worklist', 'WL2', 'ID_SlotAssignmentFolder=2'
insert [#Filters] select 3, 'Worklist', 'WL3', 'ID_SlotAssignmentFolder=3'
insert [#Filters] select 4, 'Filter', 'Filter1', 'filter_after_hours_offset=0,time_of_day_begin=00:00,worklistKey=1'
insert [#Filters] select 5, 'Filter', 'Filter2', 'filter_after_hours_offset=0,time_of_day_begin=00:00,worklistKey=1,worklistKey=2'
insert [#Filters] select 6, 'Filter', 'Filter3', 'filter_after_hours_offset=0,time_of_day_begin=00:00,worklistKey=2'
go
--select * from [#Filters]
我沒有建立這個表,我只是試圖從它進行查詢。選擇列中的逗號分隔
我有一個名爲過濾器的表。它包含兩種類型,過濾器和工作列表。篩選器參考'filtercriteria'列中的工作列表。
在上例中,Filter1引用WL1,Filter2引用WL1和WL2,Filter3引用WL2。
我需要一個查詢來搜索過濾器,以確保所有的工作列表都被引用。例如,我希望能夠搜索上面的表格並返回WL3,因爲任何過濾器中都沒有引用WL3。
filtercriteria列中還有其他信息,所以我不確定如何去除除worklistKey信息之外的所有內容,並且返回的結果只是搜索未在任何Filter中引用的Worklist列表。
因此,您需要選擇filtertype在哪裏「過濾」並檢查「worklistkey =」旁邊的所有數字,並且在給定行中可以有多個?然後將這些數字清楚地列出來,並將它與Filtername中「WL」旁邊顯示的數字進行比較,其中filtetype是「worklist」? –
正確。一個過濾器可以有很多worklistKey引用,甚至沒有。 – Pryach
工作列表鍵是否像你的例子一樣總是引用filterid?也就是說,'worklistKey = 2',但實際上是'filterid = 2'? –