SQL以表达式开头(使用`LIKE`)

时间:2011-02-28 17:47:19

标签: sql

在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索引。

3 个答案:

答案 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 || '%')