所以问题是我有一个包含快照的列:
<p>
<t8>xx</t8>
<s7>321</s7>
<s1>6</s1>
<s2>27</s2>
<s4>73</s4>
<t1>noemail@noemail.com</t1>
<t2>xxxxx</t2>
<t3>xxxxxx</t3>
<t11>xxxxxxxx</t11>
<t6>xxxxxxxx</t6>
<t7>12345</t7>
<t9>1234567890</t9>
</p>
我需要在MySQL中解析这个字符串,以便我可以计算noemail.com发生的次数。我不熟悉解析,所以如果你能解释你能做的最好的话。
答案 0 :(得分:0)
您可以通过删除搜索的子字符串并比较长度来实现。例如:
set @str = '<p>
<t8>xx</t8>
<s7>321</s7>
<s1>6</s1>
<s2>27</s2>
<s4>73</s4>
<t1>noemail@noemail.com</t1>
<t2>xxxxx</t2>
<t3>xxxxxx</t3>
<t11>xxxxxxxx</t11>
<t6>xxxxxxxx</t6>
<t7>12345</t7>
<t9>1234567890</t9>
</p>';
set @find = 'noemail@noemail.com';
select (length(@str) - length(replace(@str, @find, '')))/length(@find) AS NumberOfTimesEmailAppears;
我认为遗憾的是没有更优雅的解决方案(请注意,数据库系统不是为解析字符串而设计的:这是脚本语言的大部分工作)