반응형
네이티브 함수 'ISNULL'에 대한 호출에서 매개 변수 개수가 잘못됨
MS SQL Server 2008에서 MySQL로 변환하려는 질문이 있습니다.MSSQL에서 정상적으로 실행됩니다. 오류가 발생합니다.Incorrect parameter count in the call to native function 'ISNULL'
".
어떻게 해결해야 합니까?
SELECT DISTINCT
dbo.`@EIM_PROCESS_DATA`.U_Tax_year,
dbo.`@EIM_PROCESS_DATA`.U_Employee_ID,
CASE
WHEN dbo.`@EIM_PROCESS_DATA`.U_PD_code = 'SYS033' THEN SUM(dbo.`@EIM_PROCESS_DATA`.U_Amount)
END AS PAYE,
CASE
WHEN dbo.`@EIM_PROCESS_DATA`.U_PD_code = 'SYS014' THEN SUM(dbo.`@EIM_PROCESS_DATA`.U_Amount)
END AS TOTALTAXABLE,
dbo.OADM.CompnyName,
dbo.OADM.CompnyAddr,
dbo.OADM.TaxIdNum,
dbo.OHEM.lastName + ', ' + ISNULL(dbo.OHEM.middleName, '') + '' + ISNULL(dbo.OHEM.firstName, '') AS EmployeeName
FROM
dbo.`@EIM_PROCESS_DATA`
INNER JOIN
dbo.OHEM ON dbo.`@EIM_PROCESS_DATA`.U_Employee_ID = dbo.OHEM.empID
CROSS JOIN
dbo.OADM
GROUP BY dbo.`@EIM_PROCESS_DATA`.U_Tax_year , dbo.`@EIM_PROCESS_DATA`.U_Employee_ID , dbo.OADM.CompnyName , dbo.OADM.CompnyAddr , dbo.OADM.TaxIdNum , dbo.OHEM.lastName , dbo.OHEM.firstName , dbo.OHEM.middleName , dbo.`@EIM_PROCESS_DATA`.U_PD_code
MySQL
SELECT DISTINCT
processdata.taxYear, processdata.empID,
CASE WHEN processdata.edCode = 'SYS033' THEN SUM (processdata.amount) END AS PAYE,
CASE WHEN processdata.edCode = 'SYS014' THEN SUM (processdata.amount) END AS TOTALTAXABLE,
company.companyName, company.streetAddress, company.companyPIN, employeemaster.lastName + ', ' + IFNULL(employeemaster.middleName, '')
+ ' ' + IFNULL(employeemaster.firstName, '') AS EmployeeName
FROM
processdata INNER JOIN
employeemaster ON processdata.empID = employeemaster.empID
CROSS JOIN company
GROUP BY processdata.taxYear, processdata.empID, company.companyName, company.streetAddress, company.companyPIN,
employeemaster.lastName, employeemaster.firstName, employeemaster.middleName, processdata.edCode
expr1이 NULL이 아니면 IFNULL()이 expr1을 반환하고, 그렇지 않으면 expr2를 반환합니다.
SQL NULL Functions도 볼 수 있습니다.
MySQL의 ISNULL은 값이 null인지 확인하는 데 사용됩니다.
expr이 NULL이면 ISNULL()이 1을 반환하고, 그렇지 않으면 0을 반환합니다.
ANSI 표준 기능으로 전환할 것을 제안합니다.coalesce()
:
(dbo.OHEM.lastName + ', ' + coalesce(dbo.OHEM.middleName, '') + '' + coalesce(dbo.OHEM.firstName, '')
) AS EmployeeName
테이블 별칭을 포함하여 쿼리를 읽기 쉽게 만들 수도 있습니다.
편집:
참고로, 나는 전환의 방향을 놓친 것 같습니다.MySQL 쿼리는 다음을 사용합니다.concat()
:
CONCAT(OHEM.lastName, ', ', coalesce(OHEM.middleName, ''),
coalesce(concat(' ', OHEM.firstName), '')
) AS EmployeeName
Junit 테스트를 실행할 때 오류가 발생했습니다.ISNULL(value)
ISULL에 두 개의 파라미터가 필요하다는 오류가 발생했습니다.쿼리를 다음과 같이 변경하여 수정했습니다.value is null
테스트가 진행되는 동안에도 코드는 동일하게 작동합니다.
언급URL : https://stackoverflow.com/questions/21380956/incorrect-parameter-count-in-the-call-to-native-function-isnull
반응형
'programing' 카테고리의 다른 글
RouteParam을 사용하는 컨트롤러 각도 테스트 (0) | 2023.10.08 |
---|---|
스위프트에서 클래스 메소드/프로퍼티를 만들려면 어떻게 해야 합니까? (0) | 2023.10.08 |
파일을 재귀적으로 .gitignore하는 방법 (0) | 2023.10.08 |
우커머스:주문 시 텍스트 변경 버튼 (0) | 2023.10.08 |
조건이 충족될 때까지 행 선택 (0) | 2023.10.08 |