更改sql中的分数

时间:2015-11-15 07:58:57

标签: mysql sql regex

我的数据库中有分数作为字符串,目前是这样的:

3/8

我想改为:

<sup>3</sup>&frasl;<sub>8</sub>

我有很多像这样的分数。如何在SQL中一次更改它们?我知道我需要使用正则表达式,但不知道如何使用它。

到目前为止我尝试过:

UPDATE question_table 
SET `option` = Replace(`option`, ?? ,??)
WHERE `option` LIKE  '%/%'

不确定填写什么?。

1 个答案:

答案 0 :(得分:0)

SELECT * FROM strings;
+--------+
| string |
+--------+
| 19/32  |
| 3/8    |
| 5/16   |
+--------+

SELECT *
     , CONCAT('<sup>'
             , SUBSTRING_INDEX(string,'/',1)
             , '</sup>&frasl;<sub>'
             , SUBSTRING_INDEX(string,'/',-1)
             ,'</sub>'
             ) x 
          FROM strings;

+--------+-----------------------------------+
| string | x                                 |
+--------+-----------------------------------+
| 19/32  | <sup>19</sup>&frasl;<sub>32</sub> |
| 3/8    | <sup>3</sup>&frasl;<sub>8</sub>   |
| 5/16   | <sup>5</sup>&frasl;<sub>16</sub>  |
+--------+-----------------------------------+

UPDATE strings 
  SET string = CONCAT('<sup>'
                   , SUBSTRING_INDEX(string,'/',1)
                   , '</sup>&frasl;<sub>'
                   , SUBSTRING_INDEX(string,'/',-1)
                   , '</sub>'
                   );

Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

SELECT * FROM strings;
+-----------------------------------+
| string                            |
+-----------------------------------+
| <sup>19</sup>&frasl;<sub>32</sub> |
| <sup>3</sup>&frasl;<sub>8</sub>   |
| <sup>5</sup>&frasl;<sub>16</sub>  |
+-----------------------------------+