SQL WHERE 匹配语句(非 LIKE)

SQL WHERE matching statement (not LIKE)

提问人:Giuseppe Ventura 提问时间:3/30/2023 最后编辑:marc_sGiuseppe Ventura 更新时间:3/30/2023 访问量:52

问:

几周来,我一直在为这个问题而苦苦挣扎,但我找不到解决方案。

我举个例子来说明:假设我们有这个表():FILTER_TABLE

编号 滤波器
1 傅*
2 *酒吧
3 *

我会找到一种方法来进行 SQL 查询,以便我可以为与模式 foo* 匹配的所有字符串选择 ID 为 1 的行,为 *bar 选择 ID 为 2 的行,为所有字符串选择 ID 为 3 的行。

在伪 SQL 中:

SELECT ID 
FROM FILTER_TABLE 
WHERE FILTER MATCHES "fooString"

它应该返回 1。

不幸的是,我知道这种情况不存在。但这就是我想要的。我的SQL知识非常有限,但据我所知,没有办法得到我想要的东西。MATCHES

你有什么提示吗?

SQL 匹配

评论

2赞 markalex 3/30/2023
为什么不(有额外的步骤)?.还是我在这里遗漏了什么?LIKEwhere REPLACE( filter, '*', '%') like my_table.some_other_column
0赞 nfgl 3/30/2023
当 fooString 是 'foobar' 时必须返回什么?它与示例的每一行都匹配。并且有 fooString 和 filter 有机会包含 '%' 吗?
0赞 jarlh 3/30/2023
您使用的是哪种 dbms?

答:

2赞 iacob 3/30/2023 #1

您没有指定您正在使用的 SQL 实现,但在 T-SQL 中,您可以使用语句来使用 SQL 通配符:REPLACE%

SELECT ID 
FROM   FILTER_TABLE 
WHERE  "fooString" LIKE REPLACE(FILTER, '*', '%')

评论

0赞 Giuseppe Ventura 3/31/2023
谢谢你的回答。我一直认为您可以使用 LIKE 语句将字段的内容与模式匹配,而不是相反。我学到了一些新东西,谢谢。