У меня есть запрос, который не является каким-либо образом. Это довольно динамично, и так оно и есть из-за использования в моем приложении. Короче говоря, он позволяет пользователю выбирать поля, которые они хотят видеть в отчете, вместе с определением логики (предложение WHERE) и, наконец, какой порядок они хотят сортировать.TSQL Поиск данных в заполненной запятой строке
Чтобы сделать это проще, я создал представление всех данных, которые можно было включить в отчет. Таким образом, он просто выбирает поля, которые хочет пользователь, и запрашивает представление.
Я столкнулся с экземпляром, где вместо отдельных точек данных у меня есть некоторые ситуации 1:many
. Примером может служить список затронутых стран. На мой взгляд, это список, разделенный запятой United States, United Kingdom, Etc
. Эти данные просто заполнены и разделены запятыми в создании представлений.
Вопрос
При создании этого я имел намерение только с помощью IN
заявления по данным. Затем я понял, что IN
- это только функция таблицы и не может использоваться для строки данных.
Есть ли способ принять значение и сравнить его с разделенной запятыми строкой данных?
Я пытался создать SQL-скрипт, но сайт постоянно рушится.
CREATE TABLE Test (country varchar(100), account INT);
INSERT INTO Test ('United States, United Kingdom', '123');
INSERT INTO Test ('United States', '123567');
INSERT INTO Test ('United States, China, Japan', '123567');
-- Trying to find all the rows where `United States` is in the country column.
Я попытался с помощью LIKE %country%
однако эта функция не работает так же, как IN
как я получаю данные обратно, что мне не нужно, если часть страны находится в другом названии страны.
Есть ли какой-либо тип функции, который может быть создан, который выступает в качестве оператора IN
, где я могу проверить значение в строке, разделенной запятой?
Я отредактировал мой ответ, чтобы отразить поведение больше похоже на 'IN-clause'. Ваша «Ирландия» и «Северная Ирландия» будут обрабатываться правильно ... – Shnugo