[英]convert Microsoft SQL Server specific query to ORACLE specific query
Hi all I have the following query written for Microsoft SQL Server.大家好,我为 Microsoft SQL Server 编写了以下查询。 I need to convert this query to Oracle syntax.
我需要将此查询转换为 Oracle 语法。 I do not have any knowledge in Oracle syntax.
我对 Oracle 语法一无所知。 I need your help to make this query work on Oracle database.
我需要你的帮助来使这个查询在 Oracle 数据库上工作。 I tried many ways but no data returned.
我尝试了很多方法,但没有返回数据。
SELECT SISPREV_student.Stu_Id, SISPREV_student.CwId,
SISPREV_student.Sex, SISPREV_student.Nok_Name, SISPREV_student.Nok2_Name,
SISPREV_student.Birth_Dt,
SISPREV_student.Currently_Enrolled, SISPREV_student.Stu_Athlete, SISPREV_student.LivingOnCampus,
SISPREV_student.ImmigrationStatus,
SISPREV_student.ScholarStatus, SISPREV_student.Stu_FirstName, SISPREV_student.Stu_MiddleName,
SISPREV_student.Stu_LastName, SISPREV_student.Ethnicity
FROM SISPREV_address RIGHT OUTER JOIN
SISPREV_student ON SISPREV_address.StudentID =
SISPREV_student.Stu_Id LEFT OUTER JOIN
SISPREV_email ON SISPREV_student.Stu_Id =
SISPREV_email.StudentID LEFT OUTER JOIN
SISPREV_phone ON SISPREV_student.Stu_Id =
SISPREV_phone.StudentID
WHERE ((SISPREV_student.Stu_Id LIKE '%' + '@StudentId' + '%') OR
('@StudentId' = '')) AND
((UPPER(SISPREV_student.Stu_FirstName) LIKE '%' +
UPPER('@StudentFirstName') + '%') OR ('@StudentFirstName' = '')) AND
((UPPER(SISPREV_student.Stu_MiddleName) =
UPPER('@StudentMiddleName')) OR ('@StudentMiddleName' = '')) AND
((UPPER(SISPREV_student.Stu_LastName) LIKE '%' +
UPPER('@StudentLastName') + '%') OR ('@StudentLastName' = '')) AND
((UPPER(SISPREV_student.Nok_Name) LIKE '%' +
UPPER('@StudentNextOfKinName') + '%') OR ('@StudentNextOfKinName' = '')) AND
((UPPER(SISPREV_address.Street) LIKE '%' + UPPER('@StudentStreet') +
'%') OR ('@StudentStreet' = '')) AND
((UPPER(SISPREV_address.City) LIKE '%' + UPPER('@StudentCity') +
'%') OR ('@StudentCity' = '')) AND
((UPPER(SISPREV_address.State) LIKE '%' + UPPER('@StudentState') +
'%') OR ('@StudentState' = '')) AND
((UPPER(SISPREV_address.ZipCode) LIKE '%' + '@StudentZipCode' + '%'
) OR ('@StudentZipCode' = '')) AND
((SISPREV_student.Birth_Dt = CONVERT(SMALLDATETIME,'@StudentBirthDay')) OR ('@StudentBirthDay' = '')) AND
((SISPREV_phone.Phone = '@StudentPhoneNumber') OR
('@StudentPhoneNumber' = '')) AND
((UPPER(SISPREV_student.Sex) = UPPER('@StudentGender')) OR
('@StudentGender' = ''))
GROUP BY SISPREV_student.Stu_Id, SISPREV_student.CwId,
SISPREV_student.Sex, SISPREV_student.Nok_Name, SISPREV_student.Nok2_Name,
SISPREV_student.Birth_Dt,
SISPREV_student.Currently_Enrolled, SISPREV_student.Stu_Athlete, SISPREV_student.LivingOnCampus,
SISPREV_student.ImmigrationStatus,
SISPREV_student.ScholarStatus, SISPREV_student.Stu_FirstName, SISPREV_student.Stu_MiddleName,
SISPREV_student.Stu_LastName, SISPREV_student.Ethnicity
The following needs to change:需要更改以下内容:
((upper(sisprev_address.street) like '%' + upper('@StudentStreet') + '%')
In Oracle ||在 Oracle || is concatenation not +
是串联不是 +
((upper(sisprev_address.street) like '%' || upper('@StudentStreet') || '%') or ('@StudentStreet' = ''))
If @StudentStreet comes from user input and can be empty you can check that in Oracle as如果@StudentStreet 来自用户输入并且可以为空,您可以在 Oracle 中将其检查为
or ('@StudentStreet' is null)
Date:日期:
convert(smalldatetime, '@StudentBirthDay')
Dependig on the way you receive the date string取决于您接收日期字符串的方式
to_date('@StudentBirthDay','some date format')
'some date format' ='DD-MM-YYYY' or whatever format you handle. 'some date format' ='DD-MM-YYYY' 或您处理的任何格式。 Look up Oracle data format strings.
查找 Oracle 数据格式字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.