sql 批量修改,,mysql数据库某表内特定字符后40位后面添加添加特定内容怎样实现。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 批量修改,,mysql数据库某表内特定字符后40位后面添加添加特定内容怎样实现。相关的知识,希望对你有一定的参考价值。

比如:数据库A表B字段下所有出现“zhangsan”的后面40位添加特定内容

简单啊,使用replace方法即可。
假如表结构:create table t1(name varchar(500));
insert into t1 values('zhangsanhellozhangshan123');
update t1 set name=replace(name,'zhangshan','zhangshan这里加替代内容');
replace方法说明
replace(par1,par2,par3):
par1为列名
par2为需要替代的字符串
par3为替代的字符串
有用的话记得采纳哦^_^
我也是刚刚查过资料实践过的
参考技术A 只说大致的意思吧:

设置b字段的值= “zhangsan”前的内容 + zhangsan + 后40位 + 特定内容 + 后继内容
实现时需要对mysql中的字符串截取、定位两个函数比较熟悉:
substring()方法和locate()方法。

当然,别忘了where语句中要有 b like '%zhangsan%‘的条件,可能还要考虑长度的条件(大于40多)

实在做不出来,再问我好了。追问

能否给一个列子,我是新手,还做不出来。谢谢,能解决问题的话会继续追加分数的。

追答

稍等,马上给你一个例子。
//建表
CREATE TABLE `a` (
`b` varchar(100)
);
//数据
+-----------------------------------------------------------------+
| b |
+------------------------------------------------------------------+
| abc123zhangsan1111122222333334444455555abc |
| abc12311111zhangsan22222333334444455555abc |
| abc12311111zhang |
+------------------------------------------------------------------+
假定我们需要在包含zhangsan的记录字段做更新,在zhangsan后10位的地方添加”AAA"

select
concat(substring(b, 1, locate('zhangsan', b) -1 + length('zhangsan') + 10),
'AAA',
substring(b, locate('zhangsan', b) + length('zhangsan') + 10))
from a where
b like '%zhangsan%'
and
length(b)>length('zhangsan')+10

执行结果:
| abc123zhangsan1111122222AAA333334444455555abc
| abc12311111zhangsan2222233333AAA4444455555abc

本回答被提问者采纳
参考技术B 用这个语句
update A set B=B+“特定40位内容” where B like ‘%zhangsan%’追问

40位不是特定的,“zhangsan”为特定内容,向特定内容后面40位的后面加内容

追答

那就是40位特定内容那里改成你要加的内容就可以了,比如你要添加12345678
那么那段sql改成update A set B=B+“12345678” where B like ‘%zhangsan%’就可以了。

mysql 如何查询某表 第一个字段内容长度

aaa表,有字段id,bbb和ccc,现在想查询bbb字段第一个内容的长度,应该怎么写
id bbb ccc
1 111 222
2 333 444

select length(bbb)from aaa limit 1
这么写对吗?

不对。因为没有排序的情况下,limit 1,并不能保证取的是第一条记录。

步骤如下:

1、创建测试表;

create table test_aaa(id int, bbb int , ccc int);

2、插入测试数据;

insert into test_aaa values(1, 111, 222);

insert into test_aaa values(3, 333, 444);

insert into test_aaa values(2, 555, 666);

3、查询表中数据;可以看下id并没有排序;

select * from test_aaa;

4、重新排序后,再取第一条记录;并去bbb字段的长度;

select id, length(bbb) lb

 from (select * from test_aaa order by id) t 

limit 1;

参考技术A

“select length(bbb)from aaa limit 1”是不对的,因为“limit1”并不一定会按id的顺序去取,需要添上“order by id asc”进行排序。

mysql查询某表第一个字段内容长度的步骤如下:

我们需要准备的材料分别是:mysql查询器。

1、首先,打开mysql查询器,连接上该mysql连接。

2、点击“查询”按钮,输入:select length(bbb) from aaa order by id asc limit 1;

3、点击“运行”按钮,此时即可查询到bbb字段第一个内容的长度。

参考技术B 1、一般查询语句:SELECT `lcontent` FROM `caiji_ym_liuyan`
查询数据:
2、有些时候需要查询某个字段的长度为多少时候才显示数据:
SQL语句:SELECT `lcontent` FROM `caiji_ym_liuyan` where
length(lcontent)<=40
PS:在mysql中一个汉字等于3个字节,所以查询的时候需要转换一下
特别要注意的就时候对于字节的转换
参考技术C 这么写是可以的,不过最好select length (bbb) as len from aaa limit 1
这样获取的时候返回的是数组,直接输出$shuzu['len']就可以了本回答被提问者和网友采纳
参考技术D show databases
show tables

以上是关于sql 批量修改,,mysql数据库某表内特定字符后40位后面添加添加特定内容怎样实现。的主要内容,如果未能解决你的问题,请参考以下文章

mysql 如何查询某表 第一个字段内容长度

SQL语句替换某表某字段中第几字符

php 批量修改mysql 数据表,字段 字符集编码

linux shell命令向文件内特定的行插入数据,如注释等

mySQL怎么批量替换查询结果中的字段值?

如何批量修改mysql数据库表的字段类型