当前位置: 代码迷 >> Sql Server >> 怎么查询字符类型字段中带有小数点的数值的记录
  详细解决方案

怎么查询字符类型字段中带有小数点的数值的记录

热度:60   发布时间:2016-04-27 13:02:59.0
如何查询字符类型字段中带有小数点的数值的记录
有一张表 某字段 是nvarchar的,里面存了浮点型数字,有一位小数也有两位小数。

请问如何分别查询出带有一位小数点的所有记录和带有两位小数点的所有记录?

select * from 表
where 列名 like '%.%'

这样查可以查出带有一位小数点的所有记录。

select * from 表
where 列名 like '%.%'

这样查却查出包括带有一位小数点的所有记录。

问题:如何分别在表中找出小数点位数大于1位,2位,3位的记录?

------解决方案--------------------
错了,应该是:
SQL code
--一位select * from tbl where len(right(字段名字,len(字段名字)-charindex('.',字段名字)))=1--二位select * from tbl where len(right(字段名字,len(字段名字)-charindex('.',字段名字)))=2--三位select * from tbl where len(right(字段名字,len(字段名字)-charindex('.',字段名字)))=3
------解决方案--------------------
探讨

SQL code
select * from 表
where charindex('.',replace(列名))>3

------解决方案--------------------
SQL code
-- 一位SELECT * FROM 表名 WHERE 列名 LIKE '%._'-- 两位SELECT * FROM 表名 WHERE 列名 LIKE '%.__'
------解决方案--------------------
SQL code
SELECT * FROM table1 WHERE CHARINDEX('.',REVERSE(列名)) - 1 = 1 --1位SELECT * FROM table1 WHERE CHARINDEX('.',REVERSE(列名)) - 1 = 2 --2位SELECT * FROM table1 WHERE CHARINDEX('.',REVERSE(列名)) - 1 = 3 --3位
  相关解决方案