在SQL Server和Oracle中具有空值的列

31 浏览
0 Comments

在SQL Server和Oracle中具有空值的列

在Oracle中,使用\'\'和\'is null\'都会返回NULL值:\n

 SELECT COL1 FROM TABLE WHERE COL1='' --> 返回带有NULL值的COL1
SELECT COL1 FROM TABLE WHERE COL1 IS NULL --> 返回带有NULL值的COL1

\n这两个查询返回相同的行集。\n在Microsoft SQL中:\n

SELECT COL1 FROM TABLE WHERE COL1='' --> 返回带有值的COL1
SELECT COL1 FROM TABLE WHERE COL1 IS NULL --> 返回带有值的COL1

\n这里,第一个和第二个查询返回不同的行集。\n为什么Microsoft SQL的结果集和Oracle的结果集之间会有差异?\n如何在Microsoft SQL中检索出包含\'\'和NULL值的两个行集?

0
0 Comments

在SQL Server和Oracle中,当我们需要筛选出包含空值的列时,可以使用不同的方法。以下是解决该问题的方法:

1. 在SQL Server中,可以使用IS NULL或IS NOT NULL运算符来筛选出包含空值的列。示例代码如下:

SELECT *
FROM Table
WHERE col IS NULL

SELECT *
FROM Table
WHERE col IS NOT NULL

2. 在Oracle中,可以使用IS NULL或IS NOT NULL运算符来筛选出包含空值的列。示例代码如下:

SELECT *
FROM Table
WHERE col IS NULL

SELECT *
FROM Table
WHERE col IS NOT NULL

无论是在SQL Server还是Oracle中,我们都可以使用IS NULL或IS NOT NULL运算符来筛选出包含空值的列。这些方法在两个数据库中都是通用的,可以帮助我们快速准确地找到需要的数据。

0
0 Comments

在SQL Server和Oracle中,存在一个问题:列中的空值。在SQL Server中,如果一个列的值为空字符串,那么它将被视为一个有效的值。但是在Oracle中,空字符串会被自动转换为null值。这就是为什么在两个数据库中检索相同数据时,结果集会有所不同的原因。

为了从两个数据库中检索到相同的数据,可以使用isnull函数。在SQL Server中,可以使用以下代码:

SELECT COL1 FROM TABLE WHERE ISNULL(COL1, '') = ''

这将返回列COL1中的空值。

然而,在Oracle中没有isnull函数。在Oracle中,可以使用以下方法来解决这个问题:

stackoverflow.com/questions/3523036/…

这个链接提供了解决方案的更多信息。

感谢提供链接,我现在可以理解这个问题的区别了。通过使用isnull函数和Oracle中的等效方法,可以解决在SQL Server和Oracle中列中空值的问题。

0
0 Comments

在SQL Server中,空字符串''被视为非空。而在Oracle中,情况较为复杂。在PL/SQL中,x char := ''被视为非空,但是作为varchar2类型的空字符串''null是完全相同的,具体解释可以参考这里。而在查询中,由于COLvarchar2类型,所以条件COL = ''永远不会成立。

如果需要在两种数据库中都能正常工作的条件,请使用coalesce函数。

select * from TAB 
  where coalesce(COL,'SOME_UNIQUE_STRING') = coalesce(FILTER_PARAM, 'SOME_UNIQUE_STRING')

这样的条件可以在COLUMN等于FILTER时返回行,同时也考虑了两者都为null或空字符串的情况。

感谢Kacper提供的信息。

0