将Oracle迁移到SQL Server

时间:2018-06-16 17:09:59

标签: sql-server oracle

我们已将Oracle数据库转换为SQL Server。我们面临的问题是null vs blank。

情景:

在Oracle中:

Create table Student 
(
      Sno int, 
      FName varchar(20) not null, 
      MName varchar(30) null,
      Lname varchar(20) not null
)

Insert into Student (Sno, Fname, Mname, Lname) 
values (10, 'James' , '', 'Clark')

记录被插入到Oracle中,MName被存储为null,即使我们将空字符串('')作为值传递。

10,James,null,Clark 

但是,插入到SQL Server中的行将MName存储为空字符串,显示表中的空白区域,即使我们有默认约束。

10,James,,Clark

我们希望处理作为''插入到SQL Server表中的空字符串(null),这是Oracle数据库的类似行为。

1 个答案:

答案 0 :(得分:0)

处理此问题的一种方法是使用NULLIF()功能。在您的示例INSERT语句中,您可以说

Insert into Student(Sno,Fname,Mname,Lname)
  values (@varSno,@varFname ,NULLIF(@varMname, ''),@varLname)

在UPDATE中,它可能像

一样使用
UPDATE STUDENT
  SET Fname = @varFname,
      Mname = NULLIF(@varMname, ''),
      Lname = @varLname
  WHERE Sno = @varSno

祝你好运。