现有数据库包含一个字段调用“dependent_ages”,一些示例数据看起来像“1,2,5”或“1yo and 3mo”或“4mo”。
要求将这样的字符串转换为整数,整数是由“,”或“和”分隔的子字符串数。更准确地说,分隔符可以描述为正则表达式“,\sand\s”。所以对于上面的例子,转换后的整数是3,2和1。基本上,我感兴趣的是存在多少个匹配项,而不是这些匹配项的值。因此,无论个人价值是“14码”还是“4码”,都将被算作1。
问题是要找到一个mysql表达式,例如

SELECT REGEXMATCHES(dependent_ages) as dependent_no ...

乌巴特
一些回答/评论显示出对这个问题的一些普遍误解,所以我澄清了这个问题。

最佳答案

我想你需要这样的东西:

SELECT
  col,
  CASE WHEN COALESCE(col, '')='' THEN 0
  ELSE
    length(col)-length(replace(col, ',', ''))+
    (length(col)-length(replace(col, ' and ', ''))) DIV 5
    +1
  END
FROM
  yourtable

请参见fiddlehere

关于mysql - 如何计算MySQL中给定字符串的匹配数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15146462/

10-16 13:11