我有一个专栏,请致电' expected_salary'。通过名称,它假设是一些数值。但我希望它也具有价值,例如"竞争","基于佣金"等等,它变成了一个字符串类型。
现在愚蠢的问题是,我想查询它,比如SELECT all rows where expected_salary >= 3000
。当然,它不能使用正常的数字比较。
在我转换' expected_salary'之前到整数类型,并创建了一个额外的列调用' other_salary',我想知道,如果有更好的解决方案。
答案 0 :(得分:3)
当然,创建其他列,可能是布尔值,默认情况下为false。 is_commissioned
,is_competitive
等
然后正确的查询是
SELECT *
FROM table
WHERE expected_salary >= 3000 AND is_competitive
答案 1 :(得分:0)
您可以使用分隔值。
例如:
表示expected_salary = '3000, salary comments'
。
您可以尝试以下查询。
SELECT *
FROM table
WHERE CAST(SUBSTRING(expected_salary, 0, PATINDEX('%,%',expected_salary)) as INT) >= 3000
答案 2 :(得分:0)
create table salaries (
expected_salary text
);
insert into salaries values ('1000'),('1500,comment'),('3000,comment'),('3500'),
('comment'),('4000'),('4500,comment');
您可以使用substring()
函数从Integer
中提取string
select * from (
select substring(expected_salary FROM '[0-9]+')::int sal from salaries
) t where sal >=3000;
答案 3 :(得分:0)
在哪里添加"和expected_salary不在"使用无法与数字进行比较的值。