¿Cuál es una forma apropiada de hacer startswith(expression)
en SQL?SQL startswith (usando `LIKE`) en una expresión
Puedo hacerlo con LIKE ((expression) || '%')
, pero no se ve muy bien para mí.
consulta completa está en forma:
SELECT …, (SELECT COUNT(*)
FROM post AS child
WHERE child.path LIKE (post.path || '%')
AND child.depth >= post.depth)
FROM post WHERE …
supongo que es preferible utilizar LIKE
debido a la indexación DB para este caso.
Estás escribiendo una consulta correlacionada y usted está preocupado acerca de cómo se ve como la cláusula? ¿Por qué demonios te importaría si la declaración se ve bien? Hay tres cosas de las que preocuparse en las declaraciones de SQl: ¿devuelve los resultados correctos, funciona bien? (Sugerencia de subconsultas correlacionadas a menudo no se deben evitar) y ¿es seguro? Se ve bien ni siquiera está cerca cuarto. – HLGEM
Funciona tan bien como le sea posible (en realidad, esta subconsulta en particular solo se realiza para un subconjunto de todos los objetos devueltos utilizando CASE WHEN). Otras consideraciones tampoco son un gran problema, aunque en otros casos similares la preocupación por la seguridad podría dar como resultado la misma pregunta ('post.path' no está protegido, ¿no ?, ¿cómo podría escaparlo correctamente en tal caso? Por ahora se sabe para estar seguro sin embargo.) – HoverHell
Sólo una pregunta. ¿Es posible en sus datos tener 'child.path LIKE (post.path || '%') Y child.depth