提问人:Giuseppe Ventura 提问时间:3/30/2023 最后编辑:marc_sGiuseppe Ventura 更新时间:3/30/2023 访问量:52
SQL WHERE 匹配语句(非 LIKE)
SQL WHERE matching statement (not LIKE)
问:
几周来,我一直在为这个问题而苦苦挣扎,但我找不到解决方案。
我举个例子来说明:假设我们有这个表():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
你有什么提示吗?
答:
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 语句将字段的内容与模式匹配,而不是相反。我学到了一些新东西,谢谢。
下一个:包含具有字符串拆分功能的函数
评论
LIKE
where REPLACE( filter, '*', '%') like my_table.some_other_column