Как преобразовать varchar в int - SQL Ошибка: '=' нельзя применить к varchar, bigint - PullRequest
0 голосов
/ 15 марта 2020

У меня есть список идентификаторов коллекции продуктов в виде varchar тип данных.

Обращаясь к приведенной ниже примерной структуре. Я хотел бы получить названия элементов с идентификатором коллекции (pro_col_id) 3453, 3454, 3455.

enter image description here

Мой запрос выглядит следующим образом:

select pro_col_id, name
from collections_table 
where pro_col_id in (3453, 3454, 3455);

Когда я запустил этот запрос, я получил ошибку

SQL Ошибка: '=' не может быть применена к varchar, bigint

Поэтому я попытался привести pro_col_id как int так:

select pro_col_id, name
from collections_table 
where cast(pro_col_id as int) in (3453, 3454, 3455);

но я все еще получаю ту же ошибку. Кто-нибудь знает, в чем причина этого?

Спасибо!

1 Ответ

0 голосов
/ 15 марта 2020

Если значения являются строками, то сравнения должны быть строками:

select pro_col_id, name
from collections_table 
where pro_col_id in ('3453', '3454', '3455');

Если это не решит вашу проблему, то проблема не в предложении where. Одна возможность состоит в том, что collections_table на самом деле не таблица, а представление, и что-то не так в представлении.

...