Hibernate / jpql сравнивает строки с различной длиной, используя операторы> <, чтобы найти диапазон энтит - PullRequest
0 голосов
/ 28 января 2019

Первый писатель.

Мой вопрос: как можно выполнить этот запрос:

Select client from Client client where client.zipcode is > ?1 and client.zipcode<?2

, учитывая, что client.Zipcode содержит буквы и цифры, а также параметры в различныхдлина

, так что параметр 1 = 100 и параметр 2 = 1000 найдут клиента с client.zipcode = "ab 200"

Ответы [ 2 ]

0 голосов
/ 29 января 2019

То, что я в итоге сделал, это дополнило мой параметр 0es впереди, затем подставил его в длину до 16

, и я сделал то же самое в моем запросе

 substring('0000000000000000'+coalesce(client.zipcodee),LENGTH(coalesce(client. 
 zipcode)+1,16)<=?1

, так что теперь онможно сравнить строки, потому что они равны по длине

0 голосов
/ 29 января 2019

Я удалил текстовую часть из zipcode перед приведением ее к числу.

select client from Client client where 
CAST(TRIM(SUBSTRING(client.zipcode, LOCATE(' ', client.zipcode)+1)) AS float) > ?1
and 
CAST(TRIM(SUBSTRING(client.zipcode, LOCATE(' ', client.zipcode)+1)) AS float) < ?2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...