如何从包含整数(数字)的列中删除零(不仅仅是前导零,而是在每个位置都为零)? 例如:0349010330应该成为349133
提前致谢
答案 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)
此处的解决方案 - >
`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;
答案 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功能