从数字,Sql服务器中删除一个数字

时间:2016-06-06 08:17:10

标签: sql sql-server

表员工:

Id  Name  Salary
--  ----  ------
1   A1    120
2   B1    105
3   C1    200

现在我想通过删除每位员工的工资0来找到薪资总和

即12 + 15 + 2 = 29

有关如何实现我的结果的任何想法?

由于

5 个答案:

答案 0 :(得分:6)

如果Salary是数字类型,则需要CAST首先VARCHAR。然后使用REPLACE删除0,然后CAST将其恢复为数字类型,最后再执行SUM

SELECT
    SUM(CAST(REPLACE(CAST(Salary AS VARCHAR(10)), '0', '') AS INT))
FROM Employee

答案 1 :(得分:1)

SELECT SUM(CAST(REPLACE(t.Salary, '0', '') AS INT))
FROM (
    VALUES (120),(105),(200)
) t(Salary)

答案 2 :(得分:0)

select ceil(avg(salary) - avg(replace(salary,'0',''))) from employees;

或者您可以简单地使用替换功能

答案 3 :(得分:0)

此代码也应该起作用:

#if defined(UNICODE) && !defined(_UNICODE)
    #define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
    #define UNICODE
#endif
#include <windows.h>
    
    
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR lpCmdLine, int iCmdShow){
    
    int s =  MessageBoxA(NULL, "Hi This is my First c++ GUI", "Win32 API Say:", MB_CANCELTRYCONTINUE);
    if(s == IDTRYAGAIN){
        MessageBoxA(NULL, "Hi This is my First c++ GUI", "Win32 API Say:", MB_CANCELTRYCONTINUE);
    }else if(s == IDCONTINUE){
        MessageBoxA(NULL, "Yes GO On", "Win32 API Say:", MB_ICONINFORMATION);
    }else{
        MessageBoxA(NULL, "GoodBey !!", "Win32 API Say:", MB_OK);
    }
    return 0;
}

答案 4 :(得分:-1)

SELECT ROUND (AVG(Salary) - 
        AVG(CONVERT(INTEGER, REPLACE(CONVERT(VARCHAR, Salary), 0, ''))), 0 )
FROM EMPLOYEES