从数字中删除零

时间:2016-02-24 21:19:32

标签: sql oracle

如何从包含整数(数字)的列中删除零(不仅仅是前导零,而是在每个位置都为零)? 例如:0349010330应该成为349133

提前致谢

18 个答案:

答案 0 :(得分:13)

  REPLACE('0349010330', '0', '');

这也有效

  REPLACE('0349010330', '0');

答案 1 :(得分:4)

的Oracle / PLSQL

SELECT TO_NUMBER(REPLACE(TO_CHAR(0349010330),'0','')) FROM DUAL;

的MySQL

SELECT CONVERT(REPLACE(STR(0349010330),'0',''),INTEGER) FROM DUAL;

答案 2 :(得分:2)

无需将其转换为字符串即可使用替换

MySQL解决方案

SELECT CEIL(AVG(SALARY)-AVG(REPLACE(SALARY,"0",""))) FROM EMPLOYEES ; 

答案 3 :(得分:1)

here

此处的解决方案 - >

`SELECT ROUND(AVG(SALARY)-AVG(TO_NUMBER(REPLACE(TO_CHAR(SALARY),'0')))+.5,0) FROM EMPLOYEES;`

答案 4 :(得分:1)

MYSQL:

REPLACE('0349010330','0','')

这会将字符串中的所有O替换为空字符串。

答案 5 :(得分:1)

https://www.hackerrank.com/challenges/the-blunder/problem

对于Mysql,请在查询下面运行

select ceil(Avg(Salary) - Avg(CAST(Replace(CAST(Salary as char(1000)),'0','') as unsigned))) from EMPLOYEES

答案 6 :(得分:1)

以下是针对Hackerrank挑战The Blunder的解决方案(MySQL)

SELECT CEIL((AVG(salary)) - (AVG(REPLACE(salary, '0', '')))) AS avg_salary FROM employees;
  • REPLACE():用于从薪水中删除0。
  • AVG():用于计算平均工资。
  • CEIL():用于获取下一个四舍五入的整数。

答案 7 :(得分:1)

这是答案

替换(薪水,0)

类似于hackerrank..blunder问题中发现的问题

从员工那里选择ceil(avg(salary)-avg(replace(salary,0)));

答案 8 :(得分:0)

您可以使用: TO_NUMBER(REPLACE( '0349010330',0))

答案 9 :(得分:0)

这是删除任意数字中的 0 的答案。

replace('0349010330', '0', '') 

答案 10 :(得分:0)

我认为您不需要to_number( replace( to_char(x), '0', '' ) ) 相反,您只需输入

  

replace(x, '0')

,并且自动应用转换。 另外,您不必将0指定为空replace(x, '0', ''),因为如果您未指定其他值,replace()默认会删除第一个值。

答案 11 :(得分:0)

您可以在Oracle中使用REPLACE,但是请记住将结果转换为数字,因为REPLACE返回CHAR结果。

select to_number(replace(1001,0,'')) from dual

答案 12 :(得分:0)

HakerRank SQL Server解决方案

SELECT CEILING(AVG(SALARY))- CEILING(AVG(CAST(REPLACE(SALARY,'0','')AS INT))) +1 FROM EMPLOYEES;

我不知道为什么最后需要'+1'才能获得正确答案。

答案 13 :(得分:0)

这是使用MySQL解决Hackerrank问题的答案:

SELECT round(avg(salary),0)-round(avg(replace(salary,'0','')),0) from EMPLOYEES;

您可以使用:

replace(Column_Name,'0','')

上述给定查询从给定整数类型输入中删除0

答案 14 :(得分:0)

select 
    avg(salary) - avg(convert(integer, replace(salary,'0', ''))) + 1 
from employees

这就是答案

答案 15 :(得分:-1)

HackerRank 解决方案 https://www.hackerrank.com/challenges/the-blunder/problem

在 SQL Server 中

SELECT CAST(CEILING (AVG(CAST(SALARY AS float)) - AVG(CAST(REPLACE(salary, '0', '')AS float) ) ) as int) FROM EMPLOYEES;

这里,实际平均工资是 4046.75 错误计算的平均工资为 1794.5 因此差值 2252.25,四舍五入后为 2253.0, 但是hackerrank解决方案期望它是int, 所以我们需要再次将其转换回 int。

答案 16 :(得分:-1)

HackerRank Mysql Solution https://www.hackerrank.com/challenges/the-blunder/problem

SELECT CEIL((AVG(SALARY))-(AVG(REPLACE(SALARY,'0','')))) FROM EMPLOYEES

答案 17 :(得分:-3)

您可以使用SUBSTRING和REPLACE功能