데이터베이스에 "(빈 문자열)을 NULL이 아닌 값으로 저장할 수 있습니까?
저는 오라클 DB를 사용하고 있습니다.데이터베이스 수준에서 열 값을 NULL 또는 "(빈 문자열)로 설정하면 두 경우 모두에서 가져온 값이 NULL입니다.데이터베이스에 "(빈 문자열)을 NULL이 아닌 값으로 저장할 수 있습니까?
실행합니다.
UPDATE contacts SET last_name = '' WHERE id = '1001';
commit;
SELECT last_name, ID FROM contacts WHERE id ='1001';
LAST_NAME ID
------------ ------
null 1001
last_name을 NULL이 아닌 빈 문자열(')로 저장할 수 있습니까?
오라클에서 이 작업을 수행하는 유일한 방법은 어떤 종류의 보조 플래그 필드를 사용하는 것입니다. 이 필드는 설정 시 값이 빈 문자열이어야 한다는 사실을 나타냅니다.
Oracle이 "와 NULL을 구분하지 않는 것으로 알고 있습니다. 여기를 참조하십시오.
Oracle은 자동으로 변환하는 잘 알려진 동작을 가지고 있습니다.""
로.NULL
INSERT 및 UPDATE 문에 표시됩니다.
변환을 통해 이 동작을 방지하려면 코드에서 이 동작을 처리해야 합니다.NULL
로.""
열을 다시 읽고 사용하지 않을 때null
처음부터 당신의 프로그램에서.
오라클을 사용한 지 오래되었지만, 빈 문자열을 나타낼 때는 ' '라는 한 칸을 사용하다가 읽은 후 트리밍을 했던 것 같습니다.
를 사용하는 경우VARCHAR2
그때 데이터 유형NULL
그리고.''
동일하므로 이들을 구별할 수 없습니다. 따라서 다른 답변에서 언급한 것처럼 다음 중 하나를 수행해야 합니다.
- 비-항목을 구분하는 플래그가 포함된 추가 열이 있어야 합니다.
NULL
그리고.NULL
값을 표시하여 플래그가 비-NULL
그리고 그것은 포함합니다.NULL
그러면 빈 문자열이라는 것을 알 수 있습니다; 또는 - 빈 문자열에는 단일 공백 문자와 같은 대체 표현을 사용합니다.이렇게 하면 해당 대체 표현을 사용하여 문자열을 저장할 수 없지만, 저장 중인 문자열에 대해 뒤에 오는 공백이 구문적으로 올바르지 않은 경우 빈 문자열을 나타내는 단일 공백 문자를 사용하면 됩니다.
를 사용하는 경우CLOB
데이터 유형을 사용하여 빈 문자열을 저장할 수 있습니다.EMPTY_CLOB()
함수:
CREATE TABLE table_name (value CLOB);
INSERT INTO table_name (value) VALUES (NULL);
INSERT INTO table_name (value) VALUES (EMPTY_CLOB());
INSERT INTO table_name (value) VALUES ('A');
그러면:
SELECT value, LENGTH(value) FROM table_name;
출력:
가치 길이(값) 무효의 무효의 0 A 1
db<>여기로 이동
언급URL : https://stackoverflow.com/questions/2185743/is-it-possible-to-store-empty-string-as-a-non-null-value-in-the-database
'programing' 카테고리의 다른 글
파이썬에서 "EOF가 아닌 동안"에 대한 완벽한 대응물은 무엇입니까? (0) | 2023.07.21 |
---|---|
자바.java.javaClassCastException: javax.xml.bind입니다.JAXB 요소를 캐스트할 수 없습니다. (0) | 2023.07.21 |
메모장++에서 파이썬 스크립트를 실행하는 방법? (0) | 2023.07.21 |
python 또는 ipython 인터프리터 입력 시 모듈 자동 가져오기 (0) | 2023.07.21 |
그림 오른쪽의 Y 축 눈금 (0) | 2023.07.21 |