mysql - MySQL UPDATE 语句从字符串中删除非数字字符的正确语法是什么

标签 mysql triggers sql-update

有没有办法从 MySQL 中的 nvarchar 文本字符串中删除所有非数字字符?

我可以使用下面的 select 语句,但是在获取 UPDATE 语句时遇到问题,因此每次插入或更新内容时我都可以在 MySQL 触发器上使用 UPDATE。我需要删除破折号“-”和任何空格,只保留所有数字字符。

这是表结构的示例。

http://sqlfiddle.com/#!2/90668/7/0

包含所有破折号和空格的字段是“locationNumber”。

我为此使用的 Select 语句如下,但无论我如何尝试更新它,都会出现错误。

从测试中选择replace(replace(locationnumber, "", ""),"-","") 作为locationnumber,其中docid>0;

提前谢谢您。

最佳答案

这应该有效:

update test
    set locationnumber = replace(replace(locationnumber, ' ', ''), '-', '')

它在您的 SQLFiddle 中起作用(您必须将其放在“构建架构”一侧)。

更新/插入触发器中的语法会有点不同。您必须执行插入/更新之前触发器并具有如下逻辑:

new.locationnumber = replace(replace(old.locationnumber, ' ', ''), '-', '')

您根本不会在触发器中使用update 语句。您可以查看documentation有关触发器语法的更多信息。

关于mysql - MySQL UPDATE 语句从字符串中删除非数字字符的正确语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17158758/

相关文章:

javascript - jQuery:附加事件、调用事件

javascript - 通过文本链接对图像触发 "click"操作

mysql - 在 MySQL 中使用两次子查询的结果

php - 更新记录 codeigniter

sql - 在SQLite中,如何使用表B中列的值更新表A中的列?

php - 检查插入是否成功在循环中执行 mysqli_query

javascript - 从 PHP 获取 $_POST 到 Javascript 并将其传递给另一个 php

mysql - 扩展 LDAP 只读 WSO2

mysql - sql 查询 n 行加上另外一行 id

mysql - SQL触发器给出错误