SQL WHERE 匹配语句(不是 LIKE)

标签 sql match

几周以来我一直在努力解决这个问题,但我找不到解决方案。

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

<表类=“s-表”> <标题> ID 过滤器 <正文> 1 foo* 2 *栏 3 *

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

在伪 SQL 中:

SELECT ID 
FROM FILTER_TABLE 
WHERE FILTER MATCHES "fooString"

它应该返回 1。

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

你有什么提示吗?

最佳答案

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

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

关于SQL WHERE 匹配语句(不是 LIKE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75889305/

相关文章:

sql - 在 PostgreSQL 中将 bytea 转换为 double

sql - 帮助合并这两个查询

excel - For Each 嵌套在另一个 For Each 中不能完全工作

php - 如何将大量字符串与另一个字符串的开头进行比较?

rust - 不匹配的 ARM 是否会在 Rust 的 "match"语句中获取变量的所有者?

sql - 获取列表中每个 ID 的前 3 行

MySQL Innodb 由于行估计极其错误而无法使用索引

mysql - 我应该如何编写大型 SQL 脚本来更改数据库模式?

php - 删除文件中的完全匹配

excel - 优化 VBA 脚本以组合和整合