Sql 从值以1开头的列中选择
我有一张桌子Sql 从值以1开头的列中选择,sql,sql-server,Sql,Sql Server,我有一张桌子 id val1 a 199.87 b 166.56 c 100.67 d 233.45 e 177.23 我想选择val1以1开头的行 SELECT * FROM Table_1 WHERE val1 LIKE '1%' val1以19开头的行 SELECT * FROM Table_1 WHERE val1 LIKE '19%' 在SQL Server中是否有任何方法可以做到这一点 val1的数据类型是floa
id val1
a 199.87
b 166.56
c 100.67
d 233.45
e 177.23
val1
以1开头的行SELECT
*
FROM Table_1
WHERE val1 LIKE '1%'
val1
以19开头的行SELECT
*
FROM Table_1
WHERE val1 LIKE '19%'
在SQL Server中是否有任何方法可以做到这一点
val1的数据类型是float。在筛选从表中选择的结果时,您可以简单地使用
LIKE%
条件,如下所示
SELECT * FROM TABLE_NAME WHERE STR(VAL1, 10, 5) LIKE '19%'
每当我选择一个包含特定字符的行或一个包含值的列的数字时,这对我来说是有效的
编辑:用于将数字数据转换为字符数据的函数。您可以在where子句中使用
转换
或转换
函数将浮点
转换为字符
数据类型。下面的查询将生成您想要的结果
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
要像19
一样返回val
,只需将1
替换为19
您可以检查演示如果您的数据值永远不会超过200,则最好不要仅为了回答此查询而将其转换为其他数据类型。相反,将其作为浮动,并使用范围比较对其进行评估
SELECT * FROM t WHERE val1 >= 100 AND val1 < 200
从t中选择*,其中val1>=100且val1<200
同样,对于19x.xx值,将其设置为=190
尽可能避免转换数据;它增加了影响查询性能的开销,也意味着不能使用索引-这会严重影响查询的性能1)我想选择val1以1开头的行
SELECT
*
FROM Table_1
WHERE val1 LIKE '1%'
2) val1以19开头的行
SELECT
*
FROM Table_1
WHERE val1 LIKE '19%'
使用like运算符获取结果。无需转换Val1的数据类型
从T中选择*其中val1类似于“19%” 这个问题已经有很多很好的答案,下面的答案是另一种方法
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
你不应该像使用浮点数一样使用
-首先将其转换为字符串类型。你是对的,很抱歉忘了先将其转换为字符串,所以它不会派上用场。谢谢您的更正。请随意编辑您的答案以包含此信息。您可以添加一些关于数据目的和意义的背景信息吗?转换为varchar会使查询不可搜索。当然,在上一个查询中,第一个谓词是redundantCaution,但这会导致无法在上使用任何索引val1@CaiusJard:是的,如果没有你在回答中提到的其他方法,则应进行转换。谢谢你的提示:-)。