我的数据库的某些列中有一个字符串:
<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&space;\fn_phv&space;\frac{3}{8}" alt="" />
基本上它包含一个分数的html代码。但现在我想用以下内容替换它:
<sup>3</sup>⁄<sub>8</sub>
我知道我可以更新数据库中的值:
UPDATE table
SET `field` = Replace(`option`, '<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&space;\fn_phv&space;\frac{3}{8}" alt="" />','<sup>3</sup>⁄<sub>8</sub>')
WHERE `filed` LIKE '%<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&space;\fn_phv&space;\frac{3}{8}" alt="" />%'
但是,&#34; \ frac {3} {8}&#34;可以相应改变。括号中的数字可以更改,当它更改时,我需要更改将替换的html标记,以便相应地更改。我知道我需要使用正则表达式,但不确定如何在SQL中执行它。
需要一些指导才能做到。
答案 0 :(得分:1)
为什么要更新表格?为什么甚至将它存储在表格中?
您的应用程序代码(PHP?)似乎可以构造字符串:
$numerator = 3;
$denominator = 8;
$img = "<img
title="\frac{$numerator}{$denominator}"
src=\"http://latex.codecogs.com/gif.latex?\dpi{50}&
space;\fn_phv&space;\frac{$numerator}{$denominator}\"
alt=''
/>";
(等)
除MariaDB外,没有REGEXP_REPLACE
。
答案 1 :(得分:0)
在MySQL中,正则表达式仅支持查找“匹配”,即REGEXP
运算符,它返回一个布尔值。不支持使用正则表达式返回另一个值。
参考:12.5.2 Regular Expressions https://dev.mysql.com/doc/refman/5.6/en/regexp.html
你说你“需要使用正则表达式”来进行字符串操作。这意味着您必须将数据库中的列值提取到客户端应用程序中,并在客户端应用程序中执行字符串操作。 (从客户端发出UPDATE语句,为列分配新值,替换现有值。)
修改强>
如果您绝对 在SQL语句中执行此操作,那么一个选项是创建可用于执行字符串操作的用户定义函数。
https://dev.mysql.com/doc/refman/5.6/en/adding-functions.html
有些人可能已经编写了一个类似于你需要的东西。我不想给人一种用户定义的功能是银弹的印象;我提到它是因为它是一种选择。