首页 > 解决方案 > 查询出一列数字字段的前3位

问题描述

我有一张桌子,国家:

loctn | area  | people
abc   | 12345 | 153465
cxv   | 43566 | 388573

我正在寻找选择查询的输出,例如:

select area, people from Country where loctn='abc' 

loctn | area | people
abc   | 123  | 153

标签: sqloracleoracle11g

解决方案


从您的评论中,您实际上确实想除以 1000。您可以截断或获取下限值,使其成为整数 - 例如floor(area/1000)- 如果需要,然后连接一个固定的字符串值。

-- sample data as a CTE
with country (loctn, area, people) as (
  select 'abc', 12345, 153465 from dual
  union all select 'cxv', 43566, 388573 from dual
  union all select 'xyz', 134567 , 1234567  from dual
)
-- actual query
select loctn,
  floor(area/1000) || 'K+' as area,
  floor(people/1000) || 'K+' as people
from country;

LOCTN AREA       PEOPLE    
----- ---------- ----------
abc   12K+       153K+     
cxv   43K+       388K+     
xyz   134K+      1234K+     

或对于单个值类型,例如您问题中的查询:

select loctn,
  floor(area/1000) || 'K+' as area,
  floor(people/1000) || 'K+' as people
from country
where loctn = 'abc';

LOCTN AREA       PEOPLE    
----- ---------- ----------
abc   12K+       153K+     

这与您在评论中描述的输出(我认为)相匹配,而不是您在问题中显示的输出,但仍不清楚您真正想要什么。


推荐阅读