mysql - 更改sql中的分数

标签 mysql sql regex

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

3/8

我想改成这样:

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

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

到目前为止我已经尝试过:

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

不知道该填写什么?。

最佳答案

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>  |
+-----------------------------------+

关于mysql - 更改sql中的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717598/

相关文章:

css - 什么是 CSS 选择器的正则表达式

php - mysql 查询中时间戳的操作符之间

php - 错误SQL用php创建临时表

mysql - 如何为给定的列和多行插入随机整数

sql - 从临时表更新表

mysql - mysql数据库中的引用键插入

mysql - Rails3 和 Amazon RDS 中 SQL View 的标准解决方案

php - 通过 HTML 表单将下拉菜单的值发布到 PHP 页面

javascript - 如何修复/编辑此正则表达式?

javascript - 正则表达式从名称中删除公司类型