6

この質問は私の以前の投稿から来ています。

理由について知りたいのですが:

select * from TPM_USER where '' = ''

ただし、ゼロ行を返します。

select * from TPM_USER where 1 = 1

テーブル内のすべての行を返します。これはSQL標準によるものですか、それともこのOracle固有のものですか?

OracleSQLFiddle 。_

期待どおりに次の作業が行われます。

PostgreSQLSQLフィドル

SQL Server SQL Fiddle

mySQLSQLフィドル

4

2 に答える 2

7

Oracleは、空の文字列とを区別しませんNULL

そのため、推奨される文字列データ型はそうではVARCHAR2ありませんVARCHAR。後者はこの区別を行うことになっていますが、現在はそうではありません。

を使用する3値論理でSQLは、NULL = NULL(Oracleでは)は(ではなく'' = '')に評価されるため、句によって除外されます。NULLFALSENULLWHERE

于 2012-06-07T17:54:41.157 に答える
6

Oracleでは、空の文字列はNULLに相当しますNULL値には使用しませ=ん。

于 2012-06-07T17:47:17.003 に答える