我有一张桌子T
StaleElementReferenceException
我想选择id val1
a 199.87
b 166.56
c 100.67
d 233.45
e 177.23
以1
val1
以19开头的行。
有没有办法在SQL Server中执行此操作。
val1的数据类型是float。
答案 0 :(得分:1)
1)我想选择val1以1开头的行
SELECT
*
FROM Table_1
WHERE val1 LIKE '1%'
2)val1以19开头的行。
SELECT
*
FROM Table_1
WHERE val1 LIKE '19%'
答案 1 :(得分:0)
您可以在从表中选择过滤结果时使用LIKE %
条件,这样就可以了。
SELECT * FROM TABLE_NAME WHERE STR(VAL1, 10, 5) LIKE '19%'
每当我选择包含特定字符或包含值的列号的行时,这对我有用。
编辑:使用STR()函数将数字数据转换为字符数据。
答案 2 :(得分:0)
您可以在where子句中使用CONVERT
或cast
函数将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的数据类型。
SELECT * FROM T WHERE val1 LIKE'1%';
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