在SQL中执行startswith(expression)
的适当方法是什么?
我可以用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索引。
答案 0 :(得分:26)
只需使用LIKE 'input%'
即可。即:
WHERE child.path LIKE post.path + '%'
(我假设这是针对SQL Server的,尽管这种语法可能适用于其他地方)
答案 1 :(得分:2)
在标准SQL中,您也可以说:
where position(post.path in child.path) = 0
我不知道您的RDBMS是否支持。 PostgreSQL确实。
答案 2 :(得分:0)
您可以使用
where DATE LIKE '[(SELECT STR(YEAR(GETDATE())-1))]%'
WHERE child.path LIKE '[(SELECT STR(YEAR(GETDATE())-1))]%' (post.path || '%')