NULL vs

  • Hi evreryone,

    is there a setting on SQL Server to allow inserting empty string result in NULL in the DB?

    Example:

    Create table myTable (c1 varchar(10))

    insert into myTable values ('')

    select count(*) from myTable where c1 is null

    Result:

    -----------

    1

    (1 row(s) affected)

    For the moment the result is:

    -----------

    0

    (1 row(s) affected)

    Thank's

    Carl

  • '' isn't null.

     

    insert mytable select null

    will do it.

  • Hello Steve,

    In the SQL Server world '' is not NULL but in the Oracle world it is.

    I try to find a way to make them behaves the same.

    For us it is the rigth behavior to have '' being NULL.

    No settings to do that?

    Best Regards,

    Carl

  • I don't know the world Oracle exists in, but here in SQL Server land (and the rest of those RDBMS out there) NULL is not the same as an empty string.

    Sorry, no setting that I know of.

    --
    Frank Kalis
    Microsoft SQL Server MVP
    Webmaster: http://www.insidesql.org/blogs
    My blog: http://www.insidesql.org/blogs/frankkalis/[/url]

  • Ok thank's Frank,

    Bye the way my english is not very good so the expression "Oracle world" should not be mis-interpreted.

    Best regards,

    Carl

  • Sorry, no harm meant!

    More of a little after work joking, as here in my place it is already 9 PM.

    --
    Frank Kalis
    Microsoft SQL Server MVP
    Webmaster: http://www.insidesql.org/blogs
    My blog: http://www.insidesql.org/blogs/frankkalis/[/url]

  • If you create your table using column defaults of '':

    CREATE TABLE [myTable] (

     [column1] [char] (10)  DEFAULT (''),

     [column2] [char] (10)  DEFAULT ('')

    ) ON [PRIMARY]

    GO

    any insert that would produce a null value will instead contain ''.

     

     

    RobR

    credo quia absurdum est

  • Sure this will work, but still NULL != empty string.

    --
    Frank Kalis
    Microsoft SQL Server MVP
    Webmaster: http://www.insidesql.org/blogs
    My blog: http://www.insidesql.org/blogs/frankkalis/[/url]

  • Yes, Oracle does treat empty strings as NULL, and no SQL Server does not.  There are two options I can think of:

    1.  Create a trigger on the table(s) in question to check for the empty string condition and change it to a NULL

    2.  Use a CASE statement in your select to change the empty string into a NULL.

    The other option is to fix the application so that instead of empty strings, it passes NULL.

    OK, so that was three options... I always try to "Under promise and over deliver"

    /*****************

    If most people are not willing to see the difficulty, this is mainly because, consciously or unconsciously, they assume that it will be they who will settle these questions for the others, and because they are convinced of their own capacity to do this. -Friedrich August von Hayek

    *****************/

  • Thanks for your suggestions dcpeterson but we don't want to add an overhead.

    I would have thought that a setting would have made it possible to modify this behavior at the database server level.

    Best regards,

    Carl

Viewing 10 posts - 1 through 9 (of 9 total)

You must be logged in to reply to this topic. Login to reply