查询字符串列

时间:2014-12-26 07:49:25

标签: sql postgresql

我有一个专栏,请致电' expected_salary'。通过名称,它假设是一些数值。但我希望它也具有价值,例如"竞争","基于佣金"等等,它变成了一个字符串类型。

现在愚蠢的问题是,我想查询它,比如SELECT all rows where expected_salary >= 3000。当然,它不能使用正常的数字比较。

在我转换' expected_salary'之前到整数类型,并创建了一个额外的列调用' other_salary',我想知道,如果有更好的解决方案。

4 个答案:

答案 0 :(得分:3)

当然,创建其他列,可能是布尔值,默认情况下为false。 is_commissionedis_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不在"使用无法与数字进行比较的值。