Я хочу сравнить две строки с несколькими значениями друг с другом, чтобы увидеть, существует ли одно из значений в другой строке.mssql сравнить две строки с несколькими значениями в where where
У меня есть таблица со строкой nvarchar с значениями, разделенными каналами, например.
'значение1 | значение2 | значение3'
Я также иметь переменную NVARCHAR с запятой разделены строки, например,
«значение2, value3»
до сих пор столбец в таблице не имели одно значение, я использовал табличную функцию, чтобы плюнуть строку в переменную и использовать в операторе, чтобы увидеть, если значение был в сгенерированной таблице. например
select * from table1
WHERE column in (select val from dbo.split(@variable,','))
это не будет работать, если столбец также содержит больше значений.
select * from table1
WHERE (select val from dbo.split(column,'|')) in (select val from dbo.split(@variable,','))
Здесь он пытается сравнить 2 сгенерированные таблицы друг с другом, что не удается. Я пробовал это с помощью соединений, но не могу найти способ правильно это сделать. Я использую MSSQL 2008R2
Это очень плохой дизайн базы данных, хранения значений как CSV или труб разделенных значений. вы должны узнать о нормализации. – Jens
Вы действительно должны переосмыслить свой дизайн базы данных. разграниченные значения в одном столбце - это неправильная вещь в 99.99999% случаев. –
Если существует возможность изменить это из списка с разделителями на нормализованную таблицу, сделайте это сейчас; это первый укус торта боли. –