2

I have column field as string for ex. start_age("20") and end_age("40").

Now I want user whose age(24 as integer) is between start_age and age_age. So How can I get this user?

I have tried with this query

User.where("start_age < (?) AND end_age > (?)", age, age)

but getting this error:

PG::UndefinedFunction: ERROR:  operator does not exist: character varying < integer

Thanks in advance.

1 Answer 1

2

Do write :

User.where("start_age::integer <= :age AND end_age::integer >= :age", age: age)
# or equivalent
User.where(":age BETWEEN start_age::integer AND end_age::integer", age: age)

Here is some demo :

test_dev=# select 20  between '1'::integer and '10'::integer as result;
 result
--------
 f
(1 row)

test_dev=# select 5  between '1'::integer and '10'::integer as result;
 result
--------
 t
(1 row)

test_dev=# select '12'::integer as number;
 number
--------
     12
(1 row)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.