PHP MYSQL preg_replace 或 REGEXP
PHP MYSQL preg_replace or REGEXP
需要一个 PHP MYSQL 查询,将数据从一列复制到另一列,同时在放入新列之前去除其中的数字。尝试了以下方法:
$sql = "SELECT time FROM `arms`";
$results = $conn->query($sql);
$sql = "update `arms` set colB=preg_replace("/[0-9]/", "", 'colA')";
$results = $conn->query($sql);
也试过
$sql = "update arms_ms set colB= " .preg_replace("/[0-9]/", "", colA). "";
也试过
$sql = "update arms_ms set colB= colA REGEXP /^([^0-9]*)$/;
甚至尝试过
$sql = "update arms_ms set colB= common_schema.replace_all(colA,'0123456789','') ";
None 以上作品。
MySql 可以链式替换函数,如下所述:
Can MySQL replace multiple characters?
在你的情况下,有 10 个数字,这不是很舒服,但可以实现你的目标。
更详细的方法可以是定义函数,如下所述:
Removing numbers from string in mysql
很抱歉使用回答功能来评论之类的东西,但我无法发表评论。
正如其他人指出的那样,您不能简单地就地编辑 SQL 查询或任意将 PHP 插入查询并期望它起作用。您需要获取所需的列值,去除数字,然后执行第二个查询以更新所需的 column/row:
$sql = "SELECT colA FROM arms WHERE blahblah";
$row = $conn->query($sql)->fetch_array(MYSQLI_ASSOC);
$col = preg_replace(/[0-9]/", "", $row['colA']);
$sql = "UPDATE arms SET colB = $col WHERE blahblah";
$conn->query($sql);
类似于:
// get records
$sql1 = "SELECT primary_key, colA, colB FROM `arms`";
$results = $conn->query($sql1);
// prepare statement
$sql2 = "UPDATE `arms` SET colB=? WHERE primary_key=?";
$stmt = $conn->prepare($sql2);
// loop & update
foreach( $results as $record ) {
$args = array(
preg_replace("/[0-9]/", "", $record['colA']),
$record['primary_key']
);
$stmt->execute($args);
}
但是这更多是在考虑 PDO 的情况下编写的,如果您使用的是 MySQLi,可能需要进行一些调整。
需要一个 PHP MYSQL 查询,将数据从一列复制到另一列,同时在放入新列之前去除其中的数字。尝试了以下方法:
$sql = "SELECT time FROM `arms`";
$results = $conn->query($sql);
$sql = "update `arms` set colB=preg_replace("/[0-9]/", "", 'colA')";
$results = $conn->query($sql);
也试过
$sql = "update arms_ms set colB= " .preg_replace("/[0-9]/", "", colA). "";
也试过
$sql = "update arms_ms set colB= colA REGEXP /^([^0-9]*)$/;
甚至尝试过
$sql = "update arms_ms set colB= common_schema.replace_all(colA,'0123456789','') ";
None 以上作品。
MySql 可以链式替换函数,如下所述: Can MySQL replace multiple characters?
在你的情况下,有 10 个数字,这不是很舒服,但可以实现你的目标。
更详细的方法可以是定义函数,如下所述: Removing numbers from string in mysql
很抱歉使用回答功能来评论之类的东西,但我无法发表评论。
正如其他人指出的那样,您不能简单地就地编辑 SQL 查询或任意将 PHP 插入查询并期望它起作用。您需要获取所需的列值,去除数字,然后执行第二个查询以更新所需的 column/row:
$sql = "SELECT colA FROM arms WHERE blahblah";
$row = $conn->query($sql)->fetch_array(MYSQLI_ASSOC);
$col = preg_replace(/[0-9]/", "", $row['colA']);
$sql = "UPDATE arms SET colB = $col WHERE blahblah";
$conn->query($sql);
类似于:
// get records
$sql1 = "SELECT primary_key, colA, colB FROM `arms`";
$results = $conn->query($sql1);
// prepare statement
$sql2 = "UPDATE `arms` SET colB=? WHERE primary_key=?";
$stmt = $conn->prepare($sql2);
// loop & update
foreach( $results as $record ) {
$args = array(
preg_replace("/[0-9]/", "", $record['colA']),
$record['primary_key']
);
$stmt->execute($args);
}
但是这更多是在考虑 PDO 的情况下编写的,如果您使用的是 MySQLi,可能需要进行一些调整。