Ich habe mal ein Beispiel vorbereitet mit dem man das hoffentlich schnell nachstellen kann.
Liegt nicht an
Unicode, sondern daran, dass das eine ein VARCHAR (bzw nVARCHAR) ist, also einem Memo gleichzusetzen und somit nach dem string abgeschnitten wird - bei '' also wirklich nichts beinhaltet. Das andere ist ein CHAR-Feld (dasselbe auch mit NCHAR), welches immer zur gesamten Länge mit Leerzeichen aufgefüllt wird. Das gleichzustellen, musst Du etwas in der Länge>0 auch in das Memo reinschreiben (zB SPACE(5)).
Die NOT NULL Eigenschaft sagt nur aus, dass was drinsteht - der String selbst wird aber abgeschnitten und damit NULL für Delphi.