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 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