【问题标题】:SQL Wildcard at Like Operator with embedded table带有嵌入式表的 Like 运算符处的 SQL 通配符
【发布时间】:2020-04-07 15:19:08
【问题描述】:

我对 SQL 编程很陌生。 这是我的问题: 使用此查询:

Select Artikelname as Artikel
from Artikel
where Artikelname Like (Select txtFilter from Filter)

我想为表达式“txtFilter”添加一个通配符,以便显示所有以“txtFilter”字段中的第一个字母开头的“Artikelname”。

这个:

Select Artikelname as Artikel
from Artikel
where Artikelname Like ((Select txtFilter from Filter)*)

或者这个:

Select Artikelname as Artikel
from Artikel
where Artikelname Like (Select txtFilter from Filter) + "*"

不工作。

感谢您的帮助!

【问题讨论】:

  • 使用 % 代替 *。查看 PostgreSQL 文档以了解详细信息,它是最易访问、符合标准且完整的 SQL 文档。

标签: sql ms-access sql-like


【解决方案1】:

为什么不使用连接然后使用LIKE

   Select Artikelname as Artikel
  from Artikel a join (Select distinct 
  txtFilter
  from Filter) f on
   a.Artikelname like f.textFilter||'%' ;

【讨论】:

    【解决方案2】:

    使用exists:

    Select a.Artikelname as Artikel
    from Artikel a
    where exists (select 1
                  from txtFilter f
                  where a.Artikelname like 
                  f.textFilter||'%' ;
                 );
    

    【讨论】:

      【解决方案3】:

      * 通配符不是 SQL 标准的一部分——请改用 %。在这种情况下,您可以将 LIKE 运算符与 JOIN 一起使用——如果我理解您的目标。也有正则表达式,但它们没有被普遍实现。至少 PostgreSQL 有。

      【讨论】:

      • 应该是评论
      • 我不明白,为什么?
      猜你喜欢
      • 2012-12-15
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      相关资源
      最近更新 更多