mysql 提取某字段内容插入到某个字段

在mysql 里 提取某个带有html标签的内容(content字段)插入到简介里(description字段)

首先创建mysql去除html函数

DELIMITER //
CREATE FUNCTION `strip_tags`($str text) RETURNS text
BEGIN
    DECLARE $start, $end INT DEFAULT 1;
    LOOP
        SET $start = LOCATE("<", $str, $start);
        IF (!$start) THEN RETURN $str; END IF;
        SET $end = LOCATE(">", $str, $start);
        IF (!$end) THEN SET $end = $start; END IF;
        SET $str = INSERT($str, $start, $end - $start + 1, "");
    END LOOP;
END;
//
DELIMITER ;

再使用mysql内置截取函数left(), right(), substring(), substring_index()。还有 mid(), substr() 来截取部分内容插入到简介字段中(截取函数使用详细介绍)

最后的sql语句为:

UPDATE `xt_news` SET `description`=(select left(strip_tags(content),500) from `xt_news_data` where xt_news.id=xt_news_data.id)  WHERE 1


### SQL 截取字段内容插入字段 在关系型数据库管理系统中,可以通过 `UPDATE` 语句结合字符串处理函数来完成从一个字段截取部分内容并将其插入一个字段的操作。下面将以 MySQL 数据库为例展示具体操作。 #### 使用 UPDATE 和 SUBSTRING 函数更新数据表中的记录 假设有一个名为 `users` 的表格,其中包含两列:`email_address` 和 `username`。现在希望把邮箱地址前面的部分(即 @ 符号之前的内容提取出来存放到 `username` 列里: ```sql UPDATE users SET username = SUBSTRING_INDEX(email_address, '@', 1); ``` 这条命令会遍历整个 `users` 表格,并将每条记录里的 `email_address` 值按照 `@` 分隔符分割成多个子串;选取最左边的第一个子串赋给对应的 `username` 字段[^1]。 如果想要指定截取固定数量的字符而不是基于特定分隔符,则可以改用 `SUBSTRING()` 或者 `LEFT()` 函数来进行更精确控制: 对于固定的前几位字符的情况,在 MySQL 中可以直接应用如下语法: ```sql UPDATE table_name SET target_column = LEFT(source_column, number_of_characters_to_extract); ``` 这里 `table_name` 是目标表格的名字,而 `target_column` 就是要存储新值的目标字段名,最后面则是源字段以及打算获取多少个开头字符的数量[^2]。 当涉及到复杂一点的需求比如先组合再切片时,可以在单次查询内嵌套多层函数调用来达成目的。例如要在Hive环境下取得两个不同字段连接起来之后的结果片段: ```sql SELECT substr(concat(col1,'-',col2), 1, 7) AS combined_and_cut FROM table_name; ``` 这段代码首先通过 `concat()` 把 `col1` 和带有连字符 `-` 的 `col2` 合并在一起形成新的字符串序列,接着利用 `substr()` 来限定只保留该合成串最初的七个单位[^3]。 为了确保这些更改不会影响原始数据的安全性和一致性,在实际执行批量修改之前建议总是创建备份副本或者采用事务机制包裹上述指令集以便于必要时候回滚变更。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值