Как проверить, являются ли какие-либо значения массива подстрокой значения столбца в SQL Server 2017?

#sql-server-2017

Вопрос:

У меня есть таблица со столбцом equipments VARCHAR(100) . Я помещаю имена оборудования, разделенные запятыми, в этот столбец в виде строки.

Примерное значение может быть:

 "PKM_119160.000, PKM_119160.135"
 

Теперь я хочу отфильтровать значения этой таблицы, используя массив имен оборудования, проверяя, является ли какое-либо значение этого массива подстрокой equipments . Поэтому, если я передам массив, такой как

 ["PKM_119160.000", "PKM_119160.216"]
 

Мне нужно извлечь приведенную выше строку как "PKM_119160.000" подстроку "PKM_119160.000, PKM_119160.135" . Я мог бы использовать IN , если equipments бы столбец содержал одно название оборудования.

Как я могу получить здесь правильные значения? Что мне теперь делать? ТИА

Комментарии:

1. Я помещаю имена оборудования, разделенные запятыми, в виде строки в этот столбец -это источник всего зла в вашем случае — не делайте этого! — это нарушает даже первую нормальную форму проектирования реляционных баз данных. Если у вас есть несколько значений для хранения — используйте дочернюю таблицу!

2. В то время как можно компенсировать нарушение 1NF в дизайне таблиц большим количеством кода, вы теряете главное преимущество использования базы данных. Если вы перейдете к дизайну таблиц заголовка/сведений, ваша «проблема» станет простым соединением, которое будет работать намного лучше.

3. В обозначает операцию с таблицей. Это не будет работать со строками. В то время как вы можете использовать ПОДОБНОЕ, это небезопасно. SQL Server не имеет встроенных функций регулярных выражений. Для разделения строки, подобной этой, обратитесь к Джеффу Моденсу, отличной функции разделения> > sqlservercentral.com/articles/…

4. Большое всем вам спасибо за ваши приятные комментарии. Я собираюсь изменить базу данных, создав дочернюю таблицу, как указано в @marc_s. Большое вам спасибо за предложения