Я создал таблицу и выполнил запрос, как показано в следующем фрагменте. И в таблице есть разные столбцы с разными типами, включая отметку времени, реальную, bigint, массив и т. Д. c
Вопрос
- Когда я выполняю запрос, который я передал аргументы связывания для bigint, двойной точности как строки в предложении where. Как sql сравнивает / преобразует эти строки в реальные типы при извлечении данных?
- Могу ли я с уверенностью предположить, что передача аргументов строки в качестве значений связывания в условии where независимо от типа столбца даст правильные результаты?
CREATE TABLE common
(
time timestamp(3) without time zone DEFAULT now(),
duration_millis bigint,
customer_name text,
active_customers integer,
inactive_customers bigint,
paid_accounts_rating double precision,
customer_rating real,
attr_bool boolean,
attr_bytes bytea,
attr_array text[] COLLATE pg_catalog."default"
);
SELECT * FROM common WHERE (customer_name = 'test' and active_customers>='32' and inactive_customers >= '22') OR
(customer_name = 'test2' and active_customers>='32' and inactive_customers = '22' and paid_accounts_rating < '0.6456') ;