现有数据库包含一个字段调用“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/