#java #sql #hibernate
#java #sql #спящий режим
Вопрос:
У меня есть таблица, в которой находится строковое поле, разделенное запятой, и у меня есть строковый массив. Я хочу просмотреть этот разделенный запятыми строковый файл внутри строкового массива. Я не смог маркировать поле строки, чтобы я мог заглянуть внутрь строкового массива с помощью предложения «IN». Пример приведен ниже:
String feild = "inbox, outbox, draft, sent";
String[] strArray = ["inbox, "outbox", "sent", "web", "software"];
Как я могу получить пересечение строки feild с массивом строк?
Комментарии:
1. Хотя строка, хранящаяся в таблице, разделена запятой, ее следует рассматривать как строку. Я не думаю, что вы можете использовать нас
IN
в таком сценарии.2. Какому подходу я должен следовать в этом случае, потому что я не могу найти обходной путь.
3. На самом деле, я не хотел точно запрашивать его с помощью «IN» cluase. Я хочу запросить его с помощью аналогичного подхода.
4. Поскольку данные представляют собой строку, вы можете попробовать
LIKE
.5. Я пытался, но он не может сопоставить каждое слово в строке поля со строковым массивом. Пересечение невозможно с помощью LIKE .
Ответ №1:
Вы можете использовать:
Criterion c = null;
for(String s : strArray){
if(c!=null){
c = Restrictions.like("field","%" s "%");
else {
c = Restrictions.or(c,Restrictions.like("field","%" s "%"));
}
}
это неэффективный способ, но это решение.
Комментарии:
1. Я пытался решить проблему таким образом, но это довольно дорого. Подумайте о большом строковом массиве, который нужно искать внутри поля с длинной строкой. Это неэффективное решение 🙂