在我的MySQL数据库中,有几个文本字段包含这样的内容(空格等在我的数据库中):
Phone:
0 63 32/48 32 49
Mobile:
04 78/9 62 83 74
Homepage:
www.example.com
我需要将其更改为:
<dt>Phone:</dt><dd>0 63 32/48 32 49</dd>
<dt>Mobile:</dt><dd>04 78/9 62 83 74</dd>
<dt>Homepage:</dt><dd><a href="http://www.example.com">www.example.com</a></dd>
我也用谷歌搜索但没有成功。
有人知道如何用SQL做到这一点吗?
我非常感谢你的帮助。
答案 0 :(得分:1)
SUBSTRING_INDEX可用于将文本拆分为字符串,然后可以以任何所需的方式包装字符串:
Select Src,
CONCAT('<dt>',
SUBSTRING_INDEX(SUBSTRING_INDEX(Src, Delim, 1), Delim, -1),
'</dt><dd>',
SUBSTRING_INDEX(SUBSTRING_INDEX(Src, Delim, 2), Delim, -1),
'</dd>
<dt>',
SUBSTRING_INDEX(SUBSTRING_INDEX(Src, Delim, 3), Delim, -1),
'</dt><dd>',
SUBSTRING_INDEX(SUBSTRING_INDEX(Src, Delim, 4), Delim, -1),
'</dd>
<dt>',
SUBSTRING_INDEX(SUBSTRING_INDEX(Src, Delim, 5), Delim, -1),
'</dt><dd><a href="http://',
SUBSTRING_INDEX(SUBSTRING_INDEX(Src, Delim, 6), Delim, -1),
'">',
SUBSTRING_INDEX(SUBSTRING_INDEX(Src, Delim, 6), Delim, -1),
'</a></dd>'
) As Tgt
From (
Select
'Phone:
0 63 32/48 32 49
Mobile:
04 78/9 62 83 74
Homepage:
www.example.com' As Src, '
' As Delim) s0
第一个子字符串可以只是SUBSTRING_INDEX(Src, Delim, 1),
而最后一个可以是SUBSTRING_INDEX(Src, Delim, -1)
,但我认为让它们与其他字符串一致更清楚。