繁体   English   中英

使用SQL中的正则表达式更新字符串

[英]Update a string using regular expressions in SQL

我的数据库的某些列中有一个字符串:

<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&amp;space;\fn_phv&amp;space;\frac{3}{8}" alt="" />

基本上,它包含一个分数的html代码。 但是现在我想用:

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

我知道我可以像这样更新数据库中的值:

UPDATE table 
SET `field` = Replace(`option`, '<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&amp;space;\fn_phv&amp;space;\frac{3}{8}" alt="" />','<sup>3</sup>&frasl;<sub>8</sub>')
WHERE `filed` LIKE  '%<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&amp;space;\fn_phv&amp;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}&amp;
            space;\fn_phv&amp;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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM