es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seleccionar la subcadena más larga que coincide utilizando el ORM de Django.

Tengo una pregunta que es básicamente la misma que esta, excepto que quiero implementarla usando el ORM de Django si es posible.

La pregunta enlazada dice:

¿Cómo buscaría la coincidencia más larga dentro de una variable varchar? Por ejemplo, la_table tiene entradas de la siguiente manera:

magic_word | premio

     sh|  $0.20
    sha|  $0.40
   shaz|  $0.60
  shaza|  $1.50

Me gustaría escribir una función plpgsql que tome, entre otros argumentos, una cadena como entrada (por ejemplo, shazam) y devuelva la columna ‘premio’ en la fila de la tabla con la subcadena de coincidencia más larga. En el ejemplo mostrado, eso sería $ 1.50 en la fila con magicword shaza.

La respuesta que quiero emular en Django es

SELECT magic_word
FROM the_table
WHERE ‘shazam’ LIKE (magic_word || ‘%’)
ORDER BY magic_word DESC
LIMIT 1;

… pero no puedo ver cómo hacer la declaración LIKE “al revés”.

(“Al revés” en el sentido de que es la variable de entrada la que está en el lado izquierdo de LIKE)

Tags:  

Answer

  1. Avatar for davy.ai

    Respuesta
    Se puede utilizar la búsqueda __startswith en Django ORM para lograr el mismo resultado. Por ejemplo:


    palabra_magica = the_table.objects.filter(magic_word__startswith='shazam').order_by('-magic_word').first()

Comments are closed.