Spring Data JPA Like или Containing

Я возился с Spring Boot Data JPA и, почитав документацию, запутался. Какая разница?

Я понял, что оператор «Мне нравится» делает SQL без «%», окружающего мою строку (где имя, например «Строка»), а оператор «Содержит» создает SQL с «%», окружающим мою строку (где имя, например «% Нить%'). Я ошибаюсь?

Я использовал оператор «Нравится», и он отлично работает в ситуациях, когда «%» требуется с обеих сторон, поэтому я действительно запутался!

Можете ли вы найти abcStringabc с подобным оператором?

Gurkan İlleez 14.12.2020 18:12

Вот что меня смущает. Я никогда не использовал «Содержит», просто «Мне нравится», и у меня есть операции, которые требуют «%» с обеих сторон, так что да! Мое приложение может найти "abcStringabc" с оператором "Нравится". Итак, с учетом этого, какая разница? Или я проклят, и это не должно произойти? (кстати, я использую Spring Boot Data 1.5.2)

Alfredo Marin 14.12.2020 18:25

Я предполагаю, что вы ищете последнюю документацию, но в старой версии нет никакой информации о содержании. docs.spring.io/spring-data/jpa/docs/1.5.2.RELEASE/reference/‌​…

Gurkan İlleez 14.12.2020 19:35
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
550
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это правильно, что вы можете подражать containing с помощью like.

Различия:

  • вы должны сами заключить строку поиска с подстановочными знаками при использовании like.
  • у вас могут быть подстановочные знаки не только в начале или конце, но и в середине, несколько подстановочных знаков в середине и разные подстановочные знаки, такие как _, которые соответствуют одному символу.
  • последнее тонкое отличие состоит в том, что containing будет избегать подстановочных знаков, содержащихся в вашем аргументе поиска, что, как бы, нет. Поэтому при поиске abc%def они ведут себя по-разному.
                    | containing     | like (with additional `%` around the searchstring)
    -------------------------------------------------------------------------------------
    123abc%def456   | matches        | matches
    123abcXYZdef456 | does not match | matches
    

Это именно то, что я искал! Спасибо!

Alfredo Marin 15.12.2020 12:13

Другие вопросы по теме