Justo lo que te acabo de decir, mira bien:
Cita: string(9) "EXPIRADO " para EXPIRADO
string(8) "VIGENTE " para VIGENTE
¿Acaso no notas los espacios?
Vamos, que "EXPIRADO" no tiene 9 letras (tiene 8).
De igual modo "VIGENTE" tampoco tiene 8 letras (tiene 7).
El problema radica realmente en que no tienes cuidado al almacenar estos valores, y pues con eso lo único que provocas es que tus programas fallen, ¿por qué no pones atención?
Así que por mucho que quieras "hacer funcionar" tu código el problema de fondo es otro, y si no reparas dichas inconsistencias en tu BD entonces de nada sirve que "resuelvas" tu problema actual.
No sé si me doy a explicar.