【发布时间】:2012-09-08 07:51:56
【问题描述】:
我在 DB 中有很多值,其中包含 %s。我已经用 PHP 编写了代码来替换它们,但我需要一个查询。这可以在查询中完成吗?
我的价值观是
需求超出了所有%s 的预期,很遗憾,我们无法在我们之前电子邮件中所述的时间范围内运送您的%s 配件。 %s 我们希望通过%s 运送您的订单。
它可以有多个 %s 实例。我想将它们替换为 %1$s 进行第一次并发 %2$s 进行第二次并发。
我在我的代码中使用了正则表达式
if(preg_match_all('/(%s)/', $val, $match))
在一个循环中我这样做了
echo $val =str_replace("%s",'%'.++$j.'$s',$val,$count);
但是这一切都可以通过一个查询来完成吗?更不用说优化了。
【问题讨论】:
-
只需将其传递给 sprintf,然后用它查询 db。
-
MySQL 实际上有一个 replace 方法,只要 google 一下,replace 就会用另一个字符串替换所有出现的字符串。大问题你需要可替换的内容是动态的(一个计数器),因此我建议创建并调用一个存储过程,它接收两个字符串并附加计数器。我相信它与您在 php 中所做的没有太大区别 - 但是如果您只需要用 $s 替换 %s ,那么使用 REPLACE 会快得多。
-
另一种选择是将内容输出到文件,执行 sed(shell 命令)替换,然后将其加载回来
-
我是通过代码完成的,只是好奇有一个查询