Can I insert an empty string in a not null field?
insert into xyz(A,B) values(1,\'\'); // is this possible if B is NOT NULL?
As Daniel said, yes you can insert the zero-length string into a NOT NULL field (except on Oracle). However, if you want to rule out zero-length strings as well, you can add a constraint:
ALTER TABLE xyz ADD CONSTRAINT CHECK (b LIKE '_%');
Most modern databases have a regular-expression operator or function you could use for constraints as well, but the exact syntax varies from database to database.