Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Problem reading null

Problem reading null

Scheduled Pinned Locked Moved Database
questioncomhelpannouncement
14 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Jassim Rahma
    wrote on last edited by
    #1

    Hi, I have a table with floor_id field. The floor_id is null and I am trying to read it when I read it using where floor_id = NULL I don't get the correct result but when I try where floor_id IS NULL it's working so how can I do when passing a parameter like where floor_id = param_floor? Thanks, Jassim

    Technology News @ www.JassimRahma.com

    C J S 3 Replies Last reply
    0
    • J Jassim Rahma

      Hi, I have a table with floor_id field. The floor_id is null and I am trying to read it when I read it using where floor_id = NULL I don't get the correct result but when I try where floor_id IS NULL it's working so how can I do when passing a parameter like where floor_id = param_floor? Thanks, Jassim

      Technology News @ www.JassimRahma.com

      C Offline
      C Offline
      Chris Quinn
      wrote on last edited by
      #2

      You can do it like this in MSSQL

      WHERE ISNULL(Floor_id,'') = ISNULL(param_floor,'')

      ========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================

      1 Reply Last reply
      0
      • J Jassim Rahma

        Hi, I have a table with floor_id field. The floor_id is null and I am trying to read it when I read it using where floor_id = NULL I don't get the correct result but when I try where floor_id IS NULL it's working so how can I do when passing a parameter like where floor_id = param_floor? Thanks, Jassim

        Technology News @ www.JassimRahma.com

        J Offline
        J Offline
        Jorgen Andersson
        wrote on last edited by
        #3

        As a general solution you can try:

        WHERE floor_id = param_floor
        OR (floor_id IS NULL AND param_floor IS NULL)

        Wrong is evil and must be defeated. - Jeff Ello

        J 1 Reply Last reply
        0
        • J Jorgen Andersson

          As a general solution you can try:

          WHERE floor_id = param_floor
          OR (floor_id IS NULL AND param_floor IS NULL)

          Wrong is evil and must be defeated. - Jeff Ello

          J Offline
          J Offline
          Jassim Rahma
          wrote on last edited by
          #4

          hmm but can I ask why? I was using just floor_id = param_floor in other application and it was working fine.. why it's acting funny now?

          Technology News @ www.JassimRahma.com

          J G 2 Replies Last reply
          0
          • J Jassim Rahma

            hmm but can I ask why? I was using just floor_id = param_floor in other application and it was working fine.. why it's acting funny now?

            Technology News @ www.JassimRahma.com

            J Offline
            J Offline
            Jorgen Andersson
            wrote on last edited by
            #5

            You cannot equal null in tristate logics, it's undefined and does not equal anything. You can only check for null in both the field and the parameter.

            Wrong is evil and must be defeated. - Jeff Ello

            J 1 Reply Last reply
            0
            • J Jorgen Andersson

              You cannot equal null in tristate logics, it's undefined and does not equal anything. You can only check for null in both the field and the parameter.

              Wrong is evil and must be defeated. - Jeff Ello

              J Offline
              J Offline
              Jassim Rahma
              wrote on last edited by
              #6

              so what if I want to say:

              floor_id = param_floor

              where the passed param_floor from my application could be a value or null. How can I do this?

              Technology News @ www.JassimRahma.com

              G J 2 Replies Last reply
              0
              • J Jassim Rahma

                hmm but can I ask why? I was using just floor_id = param_floor in other application and it was working fine.. why it's acting funny now?

                Technology News @ www.JassimRahma.com

                G Offline
                G Offline
                GuyThiebaut
                wrote on last edited by
                #7

                Have a bit of a google as there is no simple way to explain it, however it goes something like this: Null is not nothing, null is indeterminate, in other words null is an unknown value. So in trying to compare an unknown value with another unknown value the result is always false. Null == Null returns false.

                “That which can be asserted without evidence, can be dismissed without evidence.”

                ― Christopher Hitchens

                1 Reply Last reply
                0
                • J Jassim Rahma

                  so what if I want to say:

                  floor_id = param_floor

                  where the passed param_floor from my application could be a value or null. How can I do this?

                  Technology News @ www.JassimRahma.com

                  G Offline
                  G Offline
                  GuyThiebaut
                  wrote on last edited by
                  #8

                  Based on your question and

                  Jassim Rahma wrote:

                  where the passed param_floor from my application could be a value or null.

                  floor_id = param_floor

                  is valid.

                  “That which can be asserted without evidence, can be dismissed without evidence.”

                  ― Christopher Hitchens

                  J 2 Replies Last reply
                  0
                  • G GuyThiebaut

                    Based on your question and

                    Jassim Rahma wrote:

                    where the passed param_floor from my application could be a value or null.

                    floor_id = param_floor

                    is valid.

                    “That which can be asserted without evidence, can be dismissed without evidence.”

                    ― Christopher Hitchens

                    J Offline
                    J Offline
                    Jassim Rahma
                    wrote on last edited by
                    #9

                    GuyThiebaut wrote:

                    is valid.

                    but it returns nothing when the passed value is null and I do have null in the table! here is my stored procedure:

                    SELECT assets$audit.audit_id,
                    assets$audit.audit_date,
                    assets$status.status_name,
                    assets$conditions.condition_name,
                    assets$audit.quantity
                    FROM assets$audit
                    JOIN assets$status ON `assets$status`.status_id = assets$audit.audit_status
                    LEFT JOIN assets$conditions ON `assets$conditions`.condition_id = assets$audit.audit_condition
                    WHERE item_id = param_item_id
                    AND location = param_loaction
                    AND floor = param_floor
                    AND room = param_room
                    AND department = param_department
                    AND employee = param_employee
                    ORDER BY audit_date DESC, created_date DESC;

                    Technology News @ www.JassimRahma.com

                    G 1 Reply Last reply
                    0
                    • G GuyThiebaut

                      Based on your question and

                      Jassim Rahma wrote:

                      where the passed param_floor from my application could be a value or null.

                      floor_id = param_floor

                      is valid.

                      “That which can be asserted without evidence, can be dismissed without evidence.”

                      ― Christopher Hitchens

                      J Offline
                      J Offline
                      Jassim Rahma
                      wrote on last edited by
                      #10

                      and this is my .NET application code:

                      sql_connection = new MySqlConnection(xmlClass.get_connectionstring("Assets\\Assets"));
                      sql_connection.Open();
                      sql_command = new MySqlCommand("sp_populate_asset_audits", sql_connection);
                      sql_command.CommandType = CommandType.StoredProcedure;
                      sql_command.CommandTimeout = Convert.ToInt32(string_encryptor.DecryptString(xmlClass.read_xml_value("Assets\\Assets", "CommandTimeOut"), "JassimRahma@731004167"));
                      sql_command.Parameters.AddWithValue("param_item_id", item_id).MySqlDbType = MySqlDbType.Int32;
                      sql_command.Parameters.AddWithValue("param_loaction", Convert.ToInt32(gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "location_id"))).MySqlDbType = MySqlDbType.Int32;
                      if (gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "floor_id") != null) sql_command.Parameters.AddWithValue("param_floor", Convert.ToInt32(gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "floor_id"))).MySqlDbType = MySqlDbType.Int32; else sql_command.Parameters.AddWithValue("param_floor", DBNull.Value).MySqlDbType = MySqlDbType.Int32;
                      if (gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "room_id") != DBNull.Value) sql_command.Parameters.AddWithValue("param_room", Convert.ToInt32(gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "room_id"))).MySqlDbType = MySqlDbType.Int32; else sql_command.Parameters.AddWithValue("param_room", DBNull.Value).MySqlDbType = MySqlDbType.Int32;
                      if (gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "department_id") != DBNull.Value) sql_command.Parameters.AddWithValue("param_department", Convert.ToInt32(gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "department_id"))).MySqlDbType = MySqlDbType.Int32; else sql_command.Parameters.AddWithValue("param_department", DBNull.Value).MySqlDbType = MySqlDbType.Int32;
                      // sql_command.Parameters.AddWithValue("param_employee", Convert.ToInt32(gridLocation.GetRowCellValue(gridLocation.FocusedRowHandle, "employee"))).MySqlDbType = MySqlDbType.Int32;
                      sql_command.Parameters.AddWithValue("param_employee", DBNull.Value).MySqlDbType = MySqlDbType.Int32;

                      Technology News @ www.JassimRahma.com

                      1 Reply Last reply
                      0
                      • J Jassim Rahma

                        GuyThiebaut wrote:

                        is valid.

                        but it returns nothing when the passed value is null and I do have null in the table! here is my stored procedure:

                        SELECT assets$audit.audit_id,
                        assets$audit.audit_date,
                        assets$status.status_name,
                        assets$conditions.condition_name,
                        assets$audit.quantity
                        FROM assets$audit
                        JOIN assets$status ON `assets$status`.status_id = assets$audit.audit_status
                        LEFT JOIN assets$conditions ON `assets$conditions`.condition_id = assets$audit.audit_condition
                        WHERE item_id = param_item_id
                        AND location = param_loaction
                        AND floor = param_floor
                        AND room = param_room
                        AND department = param_department
                        AND employee = param_employee
                        ORDER BY audit_date DESC, created_date DESC;

                        Technology News @ www.JassimRahma.com

                        G Offline
                        G Offline
                        GuyThiebaut
                        wrote on last edited by
                        #11

                        Read and understand this visual explanation of sql joins[^] then you will have an idea of what is happening. You may not have a null value in the table but you certainly have a left join which will return nulls if there is no corresponding row on the right side of the join.

                        “That which can be asserted without evidence, can be dismissed without evidence.”

                        ― Christopher Hitchens

                        J 1 Reply Last reply
                        0
                        • J Jassim Rahma

                          so what if I want to say:

                          floor_id = param_floor

                          where the passed param_floor from my application could be a value or null. How can I do this?

                          Technology News @ www.JassimRahma.com

                          J Offline
                          J Offline
                          Jorgen Andersson
                          wrote on last edited by
                          #12

                          It was a general solution i gave you, so it work for that case too. :)

                          Wrong is evil and must be defeated. - Jeff Ello

                          1 Reply Last reply
                          0
                          • G GuyThiebaut

                            Read and understand this visual explanation of sql joins[^] then you will have an idea of what is happening. You may not have a null value in the table but you certainly have a left join which will return nulls if there is no corresponding row on the right side of the join.

                            “That which can be asserted without evidence, can be dismissed without evidence.”

                            ― Christopher Hitchens

                            J Offline
                            J Offline
                            Jassim Rahma
                            wrote on last edited by
                            #13

                            the left join dose not return null

                            Technology News @ www.JassimRahma.com

                            1 Reply Last reply
                            0
                            • J Jassim Rahma

                              Hi, I have a table with floor_id field. The floor_id is null and I am trying to read it when I read it using where floor_id = NULL I don't get the correct result but when I try where floor_id IS NULL it's working so how can I do when passing a parameter like where floor_id = param_floor? Thanks, Jassim

                              Technology News @ www.JassimRahma.com

                              S Offline
                              S Offline
                              Smart003
                              wrote on last edited by
                              #14

                              Hello Jassim, while working in a procedure then i got the same problem. so based on my experience i would suggest to use decode function. decode function is similar to if else block.

                              decode(floor_id,null,1,floor_id)=decode(param_floor,null,1,param_floor)

                              thanks in advance regards, Sundeep

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups