[英]Update a string using regular expressions in SQL
我的数据库的某些列中有一个字符串:
<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="" />%'
但是,单词“ \\ frac {3} {8}”可以相应地更改。 括号中的数字可以更改,当它更改时,我需要更改将替换的html标记以进行相应的更改。 我知道我需要使用正则表达式,但不确定如何在SQL中使用它。
需要一些指导来做到这一点。
为什么要更新表格? 为什么还要将其存储在表中?
看来您的应用程序代码(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
。
在MySQL中,仅支持使用正则表达式来查找“匹配项”,即REGEXP
运算符,该运算符返回布尔值。 不支持使用正则表达式返回另一个值。
参考: 12.5.2正则表达式 https://dev.mysql.com/doc/refman/5.6/en/regexp.html
您说过,“ 需要使用正则表达式 ”来进行字符串操作。 这意味着您将必须将数据库中的列值提取到客户端应用程序中,并在客户端应用程序中执行字符串操作。 (从客户端发出UPDATE语句,以将新值分配给该列,以替换现有值。)
编辑
如果您绝对必须在SQL语句中执行此操作,那么一种选择是创建用户定义的函数,该函数可用于执行字符串操作。
https://dev.mysql.com/doc/refman/5.6/zh-CN/adding-functions.html
可能有人已经编码了某个代码,该代码的功能与您所需的功能相似。 我不想给人以用户定义函数是灵丹妙药的印象。 我提到它是因为它是一种选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.