【问题标题】:MySQL partial matching in SELECTSELECT 中的 MySQL 部分匹配
【发布时间】:2014-02-16 14:35:16
【问题描述】:

我正在寻找可以包装 SELECT 表达式的运算符,该 SELECT 表达式的行为类似于 LIKE 操作(但不是在 WHERE 子句中使用它,而是在 SELECT 表达式中使用它)并将返回该表达式。可以这样操作的东西:

SELECT LEFT(MutationGRCh37,1)
FROM mutationschema.cosmicmutations WHERE MutationGRCh37 LIKE '_:%'

但不要使用left和like,而是使用两者的某种组合,例如:

SELECT LIKE(MutationGRCh37,'_:%')
FROM mutationschema.cosmicmutations

这是一个简单的例子,但是对于更复杂的部分匹配,我需要使用大量的数学抽象来处理这个问题,只考虑这里的字符串操作:http://dev.mysql.com/doc/refman/5.7/en/string-functions.html

【问题讨论】:

  • 您想要返回什么结果集? MySQL 将为 SELECT (MutationGRCh37 LIKE '_:%') 之类的表达式返回一个 1/0
  • ...但我怀疑你所追求的是'_:%'匹配的模式

标签: mysql sql regex sql-like mysql-5.7


【解决方案1】:

如果要获取冒号前的所有内容,可以使用substring_index()

select substring_index(MutationGRCh37, ':', 1)
. . .

所以,如果列包含'abc:123',那么这将返回'abc'

【讨论】:

  • 我可以做些什么让 substring_index 可以处理空表达式而不是空但没有 ':' 分隔符?
  • @fatsokol 。 . .如果没有':',那么带有1 参数的substring_index() 将返回整个字符串。您仍然可以使用where 子句过滤器。
猜你喜欢
  • 2017-07-02
  • 2011-07-17
  • 2022-09-23
  • 2020-09-24
  • 2023-03-27
  • 2012-01-02
  • 2011-06-22
  • 2016-01-08
相关资源
最近更新 更多