Oracle의 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 null이 DESCRIPTION★★★★★★ 。
두 경우 모두 Oracle은 불만을 제기합니다.
ORA-01400: cannot insert NULL into ("WAGAFASHIONDB"."TEMP_TABLE"."DESCRIPTION")
은 빈자 an an an an as as as as 로 취급됩니다.NULLOracle ★★★★★★
내가 not null의 DESCRIPTION 표 는 다음과 .
+--------------+-----------+---------------+
|Name | Null? | Type |
+--------------+-----------+---------------+
|ID | NOT NULL | NUMBER(35) |
|DESCRIPTION | | VARCHAR2(4000)|
+--------------+-----------+---------------+
둘 다.INSERT명령어는 성공합니다. 두 요.null 및 빈 값'' DESCRIPTION의 TEMP_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가지 회피책이 있습니다.
- 'description' 필드가 유효한지 여부를 나타내는 다른 열 사용
- 빈 문자열을 저장할 '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
'programing' 카테고리의 다른 글
| Airbnb 스타일 가이드는 왜 함수 이름 추론에 의존하지 말라고 하는가? (0) | 2023.03.26 |
|---|---|
| 스프링 REST 템플릿 포함 제네릭 (0) | 2023.03.26 |
| 정의되지 않은 함수 create_function 호출 (0) | 2023.03.26 |
| 갤러리 쇼트코드에서_post_thumbnail 제외 (0) | 2023.03.26 |
| npm init react-app 사용 시 시작 후 즉시 도커 컨테이너가 빠져나갑니다. (0) | 2023.03.26 |