Ответ 1
Просто используйте LIKE 'input%'
. То есть:
WHERE child.path LIKE post.path + '%'
(Я предполагаю, что это для SQL Server, хотя этот синтаксис, вероятно, работает в другом месте)
Каким образом можно выполнить startswith(expression)
в SQL?
Я могу сделать это с помощью LIKE ((expression) || '%')
, но мне это выглядит не очень хорошо.
Полный запрос находится в форме:
SELECT …, (SELECT COUNT(*)
FROM post AS child
WHERE child.path LIKE (post.path || '%')
AND child.depth >= post.depth)
FROM post WHERE …
Я предполагаю, что предпочтительнее использовать LIKE
из-за индексации DB для этого случая.
Просто используйте LIKE 'input%'
. То есть:
WHERE child.path LIKE post.path + '%'
(Я предполагаю, что это для SQL Server, хотя этот синтаксис, вероятно, работает в другом месте)
В стандартном SQL вы также можете сказать:
where position(post.path in child.path) = 0
Я не знаю, поддерживает ли ваша РСУБД это. PostgreSQL делает.
Вы можете использовать
where DATE LIKE '[(SELECT STR(YEAR(GETDATE())-1))]%'
WHERE child.path LIKE '[(SELECT STR(YEAR(GETDATE())-1))]%' (post.path || '%')