programing

Oracle의 null 문자열과 빈 문자열 비교

goodjava 2023. 3. 26. 11:21

Oracle의 null 문자열과 빈 문자열 비교

중복 가능성:
Oracle 9i에서 빈 문자열을 NULL로 취급하는 이유는 무엇입니까?

10g이라는 .TEMP_TABLE열만 경우 - 두 、 with 、 with 、id ★★★★★★★★★★★★★★★★★」description★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

[ ] id는 시퀀스 키 입니다.NUMBER(35, 0) not null 열 및 。DESCRIPTION입니다.VARCHAR2(4000) not null.

이 경우 기본 테이블 구조는 다음과 같습니다.

+--------------+-----------+---------------+
|Name          | Null?     | Type          |
+--------------+-----------+---------------+
|ID            | NOT NULL  | NUMBER(35)    |
|DESCRIPTION   | NOT NULL  | VARCHAR2(4000)|
+--------------+-----------+---------------+

에 저는 다음 INSERT대신 명령어를 사용합니다.

INSERT INTO temp_table (id, description) VALUES (1, null); ->unsuccessful
INSERT INTO temp_table (id, description) VALUES (2, '');   ->unsuccessful

다하는 것은 이 두 가지 모두 하기 때문입니다.not nullDESCRIPTION★★★★★★ 。

두 경우 모두 Oracle은 불만을 제기합니다.

ORA-01400: cannot insert NULL into ("WAGAFASHIONDB"."TEMP_TABLE"."DESCRIPTION")

은 빈자 an an an an as as as as 로 취급됩니다.NULLOracle ★★★★★★


내가 not nullDESCRIPTION 표 는 다음과 .

+--------------+-----------+---------------+
|Name          | Null?     | Type          |
+--------------+-----------+---------------+
|ID            | NOT NULL  | NUMBER(35)    |
|DESCRIPTION   |           | VARCHAR2(4000)|
+--------------+-----------+---------------+

둘 다.INSERT명령어는 성공합니다. 두 요.null 및 빈 값'' DESCRIPTIONTEMP_TABLE.

다음 ,, 음, 음, 음, 음, 음, 음, 을 발행하면SELECT 명령어,

SELECT * FROM temp_table WHERE description IS NULL;

해서 두 행 ㄴㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ,null 및 값은 .'' DESCRIPTION★★★★★★ 。

와 같다SELECT, 는 행이 없는 , 행은 .TEMP_TABLE

SELECT * FROM temp_table WHERE description='';

DESCRIPTION★★★★★★ 。


은 Oracle을 .null 및 빈 " " " "''서는 보이지만 않은 것 INSERT이 모두 '''로 되어 ''null 및 빈 " " " "'' are are are with with with with with with with with with with with with with with with with with with with with with with with with with 에 삽입할 수 .not null약이있있 있있있다다것은은 왜???

이는 Oracle이 내부적으로 빈 문자열을 NULL 값으로 변경하기 때문입니다.Oracle은 빈 문자열을 삽입하지 않습니다.

반면 SQL Server를 사용하면 달성하려는 작업을 수행할 수 있습니다.

여기에는 2가지 회피책이 있습니다.

  1. 'description' 필드가 유효한지 여부를 나타내는 다른 열 사용
  2. 빈 문자열을 저장할 'description' 필드에 더미 값을 사용합니다. 즉, 실제 데이터가 이러한 설명 값을 만나지 않는다고 가정하여 필드를 'stackoverflowrocks'로 설정합니다.

물론 둘 다 어리석은 회피책입니다.

oracle에서는 빈 varchar2와 null이 동일하게 취급되며 관찰 결과도 이와 같습니다.

글을 쓸 때:

select * from table where a = '';

쓰는 것과 같다

select * from table where a = null;

가 아니라a is null

이 값은 true와 동일하지 않으므로 행을 반환하지 마십시오.삽입에 NOT NULL은 null 또는 빈 문자열(null로 처리됨)을 삽입할 수 없음을 의미합니다.

언급URL : https://stackoverflow.com/questions/13278773/null-vs-empty-string-in-oracle