从值以1开始的列中选择

时间:2017-08-23 05:19:29

标签: sql sql-server

我有一张桌子T

StaleElementReferenceException
  1. 我想选择id val1 a 199.87 b 166.56 c 100.67 d 233.45 e 177.23 以1

  2. 开头的行
  3. val1以19开头的行。

  4. 有没有办法在SQL Server中执行此操作。

    val1的数据类型是float。

6 个答案:

答案 0 :(得分:1)

1)我想选择val1以1开头的行

SELECT
  *
FROM Table_1
WHERE val1 LIKE '1%'

output1

2)val1以19开头的行。

SELECT
  *
FROM Table_1
WHERE val1 LIKE '19%'

output2

答案 1 :(得分:0)

您可以在从表中选择过滤结果时使用LIKE %条件,这样就可以了。

SELECT * FROM TABLE_NAME WHERE STR(VAL1, 10, 5) LIKE '19%'

每当我选择包含特定字符或包含值的列号的行时,这对我有用。

编辑:使用STR()函数将数字数据转换为字符数据。

答案 2 :(得分:0)

您可以在where子句中使用CONVERTcast函数将float转换为character数据类型。以下查询将生成您想要的结果。

select * from table1
where convert(varchar,val) like '1%';

select * from table1
where cast(val as char(10)) like '1%';

您可以使用上述任何一种。

<强>结果

id  val
-----------
a   199,87
b   166,56
c   100,67
e   177,23

要返回val之类的19,只需将1替换为19

您可以查看演示here

答案 3 :(得分:0)

如果您的数据值永远不会超过200,那么最好不要将它们转换为另一种数据类型来回答此查询。而是将它们留作浮动并使用范围比较来评估它们

SELECT * FROM t WHERE val1 >= 100 AND val1 < 200

对于19x.xx值,请将其设为>= 190

尽可能避免转换数据;它增加了影响查询性能的开销,也意味着无法使用索引 - 这会严重影响查询的性能

答案 4 :(得分:0)

使用like运算符来获取结果。无需转换Val1的数据类型。

  1. val1以1:
  2. 开头的行

    SELECT * FROM T WHERE val1 LIKE'1%';

    1. val1以19开头的行:
    2. SELECT * FROM T WHERE val1 LIKE '19%';

答案 5 :(得分:0)

这个问题已经有很多好的答案,下面的答案是另一种方法。

create table table1(
    id char(10),
    val float

);    

insert into table1 values('a',199.87);
insert into table1 values('b',166.56);
insert into table1 values('c',100.67);
insert into table1 values('d',233.45);
insert into table1 values('e',177.23);



Query
select * from table1 where (CHARINDEX( '1',val, 1))=1;
select * from table1 where (CHARINDEX( '19',val, 1))=1;

output 
    id  val
    a           199,87
    b           166,56
    c           100,67
    e           177,23

    id  val
    a           199,87