MySQL ve PostgreSQL hakkında hiçbir şey bilmiyorum, ama genel olarak bu biraz tedavi edeyim.
NULL ile '' arasında kullanıcıları seçmesine izin vermeyen Oracle adlı bir DBMS var. Bu açıkça her ikisini birbirinden ayırmanın gerekli olmadığını göstermektedir. Bazı can sıkıcı sonuçlar var:
Varchar2'yi bu gibi boş bir dizeye ayarladınız:
Update mytable set varchar_col = '';
Aşağıdaki aynı sonuç yol açar
Update mytable set varchar_col = NULL;
Ancak değerin boş veya NULL olduğu sütunları seçmek için kullanmanız gerekir.
select * from mytable where varchar_col is NULL;
kullanma
select * from mytable where varchar_col = '';
sözdizimsel olarak doğrudur, ancak hiçbir zaman bir satır döndürmez.
Öte yandan, Oracle'da dizeleri birleştirirken. NULL varchars boş dizge olarak kabul edilir.
select NULL || 'abc' from DUAL;
abc verir . Diğer DBMS bu durumlarda NULL döndürür.
Açıkça ifade etmek istediğinizde, bir değer atandığını, '' gibi bir şey kullanmanız gerekir.
Ve NULL’da kırpmanın boş değil sonuçlandığından endişelenmelisiniz
select case when ltrim(' ') is null then 'null' else 'not null' end from dual
Öyle.
Şimdi '' NULL ile aynı olmayan DBMS'ye bakıyoruz (örneğin, SQL-Server)
'' İle çalışmak genellikle daha kolaydır ve çoğu durumda her ikisini de ayırt etmek için pratik bir ihtiyaç yoktur. Bildiğim istisnalardan biri, sütununuzun bazı ayarları temsil ettiği ve onlar için boş varsayılanları olmadığı zamandır. '' İle NULL arasında ayrım yapabiliyorsanız, ayarınızın boş olduğunu ifade edebilir ve varsayılanın uygulanmasını önleyebilirsiniz.
NULL
duymuyor