在MySQL数据库

时间:2016-08-05 14:12:58

标签: mysql sql

在我的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做到这一点吗?

我非常感谢你的帮助。

1 个答案:

答案 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

SQLFiddle

第一个子字符串可以只是SUBSTRING_INDEX(Src, Delim, 1),而最后一个可以是SUBSTRING_INDEX(Src, Delim, -1),但我认为让它们与其他字符串一致更清楚。