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

Hov*_*ell 18 sql

什么是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 …
Run Code Online (Sandbox Code Playgroud)

我认为最好使用LIKE因为这种情况下的DB索引.

Sco*_*son 27

只是用LIKE 'input%'.IE:

WHERE child.path LIKE post.path + '%'
Run Code Online (Sandbox Code Playgroud)

(我假设这是针对SQL Server的,尽管这种语法可能适用于其他地方)

  • 语法不适用于其他数据库,因为字符串连接的+特定于Microsoft.所有符合标准的DBMS都使用`||`.但除此之外,我同意该声明应该适用于其他DBMS (3认同)
  • 这就是我使用的(我在问题中写了同样的东西). (2认同)

Tom*_*son 4

在标准 SQL 中,您还可以说:

where position(post.path in child.path) = 1
Run Code Online (Sandbox Code Playgroud)

我不知道你的 RDBMS 是否支持。PostgreSQL 确实如此。