通过sql语句将blob里的char取出来转成数字保存在其它字段_Mysql

这个需求是有个表结构,本身设计为

但现在需要将blob里地17、18、19三个字段里的数据作为数字保存在blob外新增的三个字段Gem1 Gem2 Gem3上。

通过下面的sql语句可以做到:
1、增加三个字段:

复制代码 代码如下:

alter table EquipmentInfo add Gem1 TINYINT UNSIGNED default 0;
alter table EquipmentInfo add Gem2 TINYINT UNSIGNED default 0;
alter table EquipmentInfo add Gem3 TINYINT UNSIGNED default 0;

2、使用下面的命令把blob里的数据拷贝出来
update EquipmentInfo set Gem1=conv(substr(HEX(EquipmentBlob),17,2),16,10),Gem2=conv(substr(HEX(EquipmentBlob),19,2),16,10),Gem3=conv(substr(HEX(EquipmentBlob),21,2),16,10);
说明:
HEX(EquipmentBlob) 将EquipmentBlob转成16进制的字符串
substr(str,beginIdx,num) 将str从beginIdx开始的字符串截取出来,截取长度为num
conv(N,from_base,to_base) N是要转换的数据,from_base是原进制,to_base是目标进制。

时间: 2025-01-26 23:40:13

通过sql语句将blob里的char取出来转成数字保存在其它字段_Mysql的相关文章

hql-怎么在sql语句的String里定义变量

问题描述 怎么在sql语句的String里定义变量 如String hql ="from Book as book where book.bookNo = [变量]" Query query = session.createQuery(hql); 字符串hql该怎么写呢? 解决方案 declare 变量名 varchar(255); #非数字变量 declare 变量名 int; #数字变量 select * from book where book.bookNo = 变量名: 解决方

SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写

一.实例介绍 SQL语句大小写到底是否区分呢?我们先从下面的这个例子来看一下: 例: --> 创建表,插入数据: declare @maco table (number int,myvalue varchar(2)) insert into @maco select 1,'aa' union all select 2,'Aa' union all select 3,'aA' union all select 4,'AA' --不区分大小写 select * from @maco WHERE nn

下面的sql语句在mysql里可以查出数据,在oracle里报错:不是 GROUP BY 表达式

问题描述 select count(advicedeta0_.topic_id) as col_0_0_, base_data2_.column_name as col_1_0_, advicedeta0_1_.congressId as col_2_0_ from advice_detail advicedeta0_ inner join topic advicedeta0_1_ on advicedeta0_.topic_id=advicedeta0_1_.id, Congress cong

jdbc sql语句-从网上下的mysql代码想改成sql server的,能帮我看看我改的代码对吗?

问题描述 从网上下的mysql代码想改成sql server的,能帮我看看我改的代码对吗? 网上的drop database bbs; create database bbs; use bbs; CREATE TABLE admin (id int(11) NOT NULL AUTO_INCREMENTusername varchar(50) DEFAULT NULLpassword varchar(50) DEFAULT NULL PRIMARY KEY (id)) ENGINE=InnoDB

经典SQL语句大集合

经典SQL语句大集合,下列语句部分是Mssql语句,不可以在access中使用. 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name

linq2sql:直接执行sql语句

1.ExecuteQuery方法 看命名,我们很容易联想到ado.net里熟悉的Command的ExecuteNonQuery方法,但是VS的智能提示告诉我们这个方法返回的是一个泛型集合,应该"所思非所得".下面通过一个简单方法,验证我们的猜想(数据库设计可以参考这一篇): /// <summary> /// 直接执行sql语句, 获取总人数 /// </summary> /// <returns></returns>  public i

修改数据库字段-请问怎么用sql语句去修改sqlite中的数据字段的类型呢?

问题描述 请问怎么用sql语句去修改sqlite中的数据字段的类型呢? 我现在想写一个方法,用来修改sqlite数据库中某个表中的某个列的类型,因为现在客户需要发生变化了,我需要在数据完整的情况下吧数据类型给改变了,也就是说我不能替换数据库,哪就只有用sql语句去修改类型了,跪求高手... 解决方案 sqlite数据库中数据类型存在sqlite_master表中 select sql from sqlite_master where tb_name='tbname' 把这条sql语句改了,表结构

Oracle查询SQL语句,请教各位大神

问题描述 Oracle查询SQL语句,请教各位大神 有这样一些数据: name subject张三 语文 李四 数学 张三 数学 李四 英语 张三 历史 想得到的结果: name subject张三 语文,数学,历史 李四 数学,英语 请教SQL语句,各路大神帮忙思考下. 解决方案 SELECT name , wmsys.wm_concat (subject) as result FROM 表名 GROUP BY name 解决方案二: 这个主要用SQL语句将subject里的数据拼接成一个字符

数据库-sql语句按年怎样分组 求大神支招

问题描述 sql语句按年怎样分组 求大神支招 比如下面:比如字段两列 A B2011 1002011 602011 702012 2002012 2502013 3002013 400 我想最后得到分组结果 比如:2011年的为一个数组 array( 2011 => 100 2011 => 60 2011 => 70 )然后 2012和2013 和2011 一个道理求大神支招 解决方案 --> 测试数据:[tb]if object_id('[tb]') is not null dr