MySQL Insert NULL Inserts 0
'' is an empty string, it's not a NULL value. 

Other DBMS would rightfully reject your update statement in the first place (because  it's invalid to assign a string to a number). 

If you want to set something to null then use null not an empty string

UPDATE item 
  SET item_publication_year = null 
WHERE item_id = 5




You should also use the correct literal type for the data type. '5' is a string, it's not a number . 5 is a number. Not using the correctly typed literal might result in indexes not being used.