精华内容
下载资源
问答
  • ![图片说明](https://img-ask.csdn.net/upload/202002/21/1582283738_225487.png) 我想做是给这几个字段加上小数点,比如lat中51324700这个数据修改成51.324700 请问有什么方法能修改
  • -- 批量修改所有表中字段名为 aaa 的字段类型 -- 要保证字段是可以修改的 declare @sql varchar(1000) declare cur_sql cursor for select 'alter table ' + a.name + ' alter column ' + b.name + ' varchar...
    

    -- 批量修改所有表中字段名为 aaa 的字段类型
    -- 要保证字段是可以修改的

    declare @sql varchar(1000)
    declare cur_sql cursor for
    select 'alter table ' + a.name + ' alter column ' + b.name + ' varchar(20) '
    from sys.objects a,sys.columns b
    where a.object_id = b.object_id and b.name = 'aaa' and a.type = 'U'

    open cur_sql
    fetch cur_sql into @sql
    while @@fetch_status = 0
       begin
          -- 每次修改
          execute ( @sql )
          fetch cur_sql into @sql
       end
    close cur_sql
    deallocate cur_sql

    -- 还有一种方案是把所有的语句 取 出来,然后再运行
    -- 如下,把结果集里的语句copy到查询分析器里
    select 'alter table ' + a.name + ' alter column ' + b.name + ' varchar(20) '
    from sys.objects a,sys.columns b
    where a.object_id = b.object_id and b.name = 'aaa'  and a.type = 'U'

    展开全文
  • 比如我在“客户属性”字段里维护了一些值:然后点保存:其中第二个batch操作是通过一个roundtrip读取contact模型下多个子节点的数据,和我们这个修改的场景没有关联。使用postman进行修改:body字段维护以下内容:--...

    Marketing Cloud里的contact主数据,创建成功后也不是所有字段都能够被修改。在Personal data区域的字段是可以被修改的。

    21bfd546dd0b49ecdc0af86f4a341b0b.png

    比如我在“客户属性”字段里维护了一些值:

    3cc91dcf2cb3d350b0f48153ab8f7fab.png

    然后点保存:

    7a848e1593a0b0d0fd0c1066152eb2b9.png

    其中第二个batch操作是通过一个roundtrip读取contact模型下多个子节点的数据,和我们这个修改的场景没有关联。

    使用postman进行修改:

    54e7f02fd33a3e577f8ab2808382e616.png

    body字段维护以下内容:

    --batch_1f7d-bd35-caedContent-Type: multipart/mixed; boundary=changeset_8f9e-9a44-9f9e--changeset_8f9e-9a44-9f9eContent-Type: application/httpContent-Transfer-Encoding: binaryMERGE Consumers('02000A21209F1EE99CDF1A1FC9AA8065')?sap-client=100 HTTP/1.1Cache-Control: max-age=360sap-contextid-accept: headerAccept: application/jsonAccept-Language: enDataServiceVersion: 2.0MaxDataServiceVersion: 2.0x-csrf-token: fQ2Pwfmf0K_LVYoKV9QYUw==Content-Type: application/jsonContent-Length: 215{"__metadata":{"uri":"https://jerry.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/Consumers('02000A21209F1EE99CDF1A1FC9AA8065')
    展开全文
  • MySQL中修改多个数据库下包含相同字段的表中该字段的长度 一、业务场景 由于一开始设计数据库表结构的时候没能沟通协作好,导致不同的数据库之间,甚至同一个数据库下的不同表中,同一字段package_name的长度也不同...

    MySQL中修改多个数据库下包含相同字段的表中该字段的长度

    一、业务场景

    由于一开始设计数据库表结构的时候没能沟通协作好,导致不同的数据库之间,甚至同一个数据库下的不同表中,同一字段package_name的长度也不同,甚至一些表中字段名称是大写,一些是小写。由于长度不统一,上游业务中记录的数据中package_name字段可以存储数据,而下游业务在保存数据时mysql就会报错。为了解决这一问题,查阅了网上很多博客,最终想到以下两种方式解决。

    方法一:使用存储过程

    -- 如果存储过程存在就删除
    DROP PROCEDURE
    IF
    	EXISTS userId;
    
    delimiter //
    CREATE PROCEDURE userId ( ) BEGIN
    -- 定义循环条件
    DECLARE
    		flag INT DEFAULT 0;
    -- 声明变量
    	DECLARE
    		db VARCHAR ( 50 );
    	DECLARE
    		tname VARCHAR ( 50 );
    	DECLARE
    		columnName VARCHAR ( 50 );
    	DECLARE
    		execSql VARCHAR ( 50 );
    -- 使用游标
    -- 业务要求:只查询以gpx或者gpe开头的数据库;排除视图
    	DECLARE
    		result CURSOR FOR SELECT
    		table_schema,
    		table_name,
    		column_name
    	FROM
    		INFORMATION_SCHEMA.COLUMNS 
    	WHERE
    		COLUMN_NAME = 'PACKAGE_NAME' AND TABLE_NAME NOT LIKE AND (table_schema like 'gpx%' or table_schema like 'gpe%')'view%';
    -- 退出循环
    	DECLARE
    		CONTINUE HANDLER FOR SQLSTATE '02000' 
    		SET flag = 1;
    -- 打开游标
    	OPEN result;
    	WHILE
    			flag <> 1 DO
    			FETCH result INTO db,tname,columnName;
    	
    		SET @execSql = CONCAT( 'ALTER TABLE `', db,'`.`', tname,'` MODIFY COLUMN ', columnName,' varchar(500);' );
    		PREPARE stmt FROM @execSql;
    		EXECUTE stmt;
    		
    	END WHILE;
    	
    	END;
    // -- 调用存储过程更新数据
    CALL userId ( );
    // 
    DROP PROCEDURE userId;
    //
    

    使用上面的存储过程会出现以下两种问题:
    1、虽然所有包含package_name字段的表(mysql不区分大小写,字段名称为PACKAGE_NAME和package_name的表都能被查询得到),且字段的名称都成功改为varchar(500),但是字段的注释说明变成了空白。我尝试加上comment,但是sql执行一直报错,就放弃了。
    2、可能一些表的字段的长度已经被修改了,但是接下来的执行报错了,存储过程没有回滚。本人对数据库研究不深,没有想到解决的办法。
    有兴趣的大佬可以根据自己的兴趣修改一下,也许就解决了。

    方法二:使用查询语句查询出符合条件的数据库表,之后给出所有的修改语句

    第一步:

    select 
     table_schema,
      table_name,
      column_name,
     CONCAT( 'ALTER TABLE `', table_schema,'`.`', table_name,'` MODIFY COLUMN ', column_name,' varchar(500);' )
     FROM
      INFORMATION_SCHEMA.COLUMNS 
     WHERE
      COLUMN_NAME = 'PACKAGE_NAME' AND (table_schema like 'gpx%' or table_schema like 'gpe%') AND TABLE_NAME NOT LIKE 'view%'
    

    执行结果如下:
    在这里插入图片描述
    第二步:右键复制出来所有的修改字段的sql语句。
    在这里插入图片描述
    最终得到的结果为:
    在这里插入图片描述

    最后附上查询语句,方便查看操作结果

    SELECT   TABLE_NAME '表名',TABLE_SCHEMA '数据库名',ORDINAL_POSITION '顺序',COLUMN_NAME '字段',DATA_TYPE '类型' 
        ,character_maximum_length '字符长',IF(COLUMN_KEY='PRI',"√","") '主键',IF(EXTRA='auto_increment',"√","") '自增长' 
      ,IF(IS_NULLABLE='YES',"√","") '允许空',CHARACTER_SET_NAME '编码',COLUMN_DEFAULT '默认值',COLUMN_COMMENT '说明' 
    FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'PACKAGE_NAME' AND (table_schema like 'gpx%' or table_schema like 'gpe%') AND TABLE_NAME NOT LIKE 'view%'
    

    查询结果:
    在这里插入图片描述

    展开全文
  • 先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型:首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要信息如上图所示:type代表一个value对...

    Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。何时使用Redis呢?

    先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:

    c40af34c1d529fea44d657620030b4f5.png

    首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式,比如:type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的,当然前提是这个字符串本身可以用数值表示,比如:"123" "456"这样的字符串。

    这里需要特殊说明一下vm字段,只有打开了Redis的虚拟内存功能,此字段才会真正的分配内存,该功能默认是关闭状态的。通过上图我们可以发现Redis使用redisObject来表示所有的key/value数据是比较浪费内存的,当然这些内存管理成本的付出主要也是为了给Redis不同数据类型提供一个统一的管理接口,实际作者也提供了多种方法帮助我们尽量节省内存使用,我们随后会具体讨论。

    一、string

    string是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。value其实不仅是String,也可以是数字。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

    常用命令:get、set、incr、decr、mget等。

    应用场景:String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类,即可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受Redis的定时持久化,操作日志及 Replication等功能。除了提供与 Memcached 一样的get、set、incr、decr 等操作外,Redis还提供了下面一些操作:

    • 获取字符串长度
    • 往字符串append内容
    • 设置和获取字符串的某一段内容
    • 设置及获取字符串的某一位(bit)
    • 批量设置一系列字符串的内容

    使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。 实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。

    redis 127.0.0.1:6379> SET name "runoob""OK" redis 127.0.0.1:6379> GET name"runoob"复制代码

    在以上实例中我们使用了 Redis 的SETGET 命令。键为 name,对应的值为 runoob 。 **注意:**一个键最大能存储512MB。

    二、Hash

    Hash是一个键值(key => value)对集合。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。 常用命令:hget,hset,hgetall 等。 应用场景:我们简单举个实例来描述下Hash的应用场景,比如我们要存储一个用户信息对象数据,包含以下信息:

    用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:

    774f0f1c5392404d9e90ebcb662c8169.png

    第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题。

    1957b8f7f9d6fa2d07f13c8b9ccc0a50.png

    第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。

    那么Redis提供的Hash很好的解决了这个问题,Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口,如下图:

    ba1671f594dbf29c069d708c9e74c4e7.png

    也就是说,Key仍然是用户ID, value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题,很好的解决了问题。

    这里同时需要注意,Redis提供了接口(hgetall)可以直接取到全部的属性数据,但是如果内部Map的成员很多,那么涉及到遍历整个内部Map的操作,由于Redis单线程模型的缘故,这个遍历操作可能会比较耗时,而另其它客户端的请求完全不响应,这点需要格外注意。 使用场景:存储部分变更数据,如用户信息等。 实现方式:上面已经说到Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

    redis> HSET myhash field1 "Hello" field2 "World""OK" redis> HGET myhash field1"Hello" redis> HGET myhash field2"World"复制代码

    实例中我们使用了 RedisHMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value 。每个 hash 可以存储 232 -1 键值对(40多亿)。

    三、list

    list列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

    常用命令:lpush(添加左边元素),rpush,lpop(移除左边第一个元素),rpop,lrange(获取列表片段,LRANGE key start stop)等。

    应用场景:Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现。

    List 就是链表,相信略有数据结构知识的人都应该能理解其结构。使用List结构,我们可以轻松地实现最新消息排行等功能。List的另一个应用就是消息队列, 可以利用List的PUSH操作,将任务存在List中,然后工作线程再用POP操作将任务取出进行执行。Redis还提供了操作List中某一段的api,你可以直接查询,删除List中某一段的元素。

    实现方式:Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。

    Redis的list是每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List即可以作为栈,也可以作为队列。 获取越接近两端的元素速度越快,但通过索引访问时会比较慢。

    使用场景: 消息队列系统:使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。比如:将Redis用作日志收集器,实际上还是一个队列,多个端点将日志信息写入Redis,然后一个worker统一将所有日志写到磁盘。

    取最新N个数据的操作:记录前N个最新登陆的用户Id列表,超出的范围可以从数据库中获得。

    //把当前登录人添加到链表里ret = r.lpush("login:last_login_times
    展开全文
  • 1、检索所有数据+修改指定一条记录的一个字段值+查询是否更改成功,可以看到,生日更改了 2、检索特定行数据: ①检索特定行数据:特定出生日期: ②检索特定行数据:特定雌性狗:注意使用and ①检索特定行...
  • 由于最近我们的一个网站回购了一个很好域名所有与之相关项目都需要修改; 今天接到一个任务将我们会员开通个人网站二级域名换成新域名,看了一下库已开通还很少才2w多,且要换和之前库中的数据很规则形...
  • 把两个用户信息合并成一个,这个简单2、查询当前库中所有包含userId表3、把旧userId做条件,来对真个库包含userID表进行数据修改吐槽自己:很遗憾这个思路最后并没有走通,因为每个用户涉及的一个积分运算...
  • 众所周知,将mysql语句写在for循环内是大忌,每一次循环都会和数据库建立一次连接,效率低下,网页卡得令人发指。 解决办法有: ...但是这些都仅限于修改一致情况,比如:假如有一个学生表,要把特定...
  • 假设一个订单里面有多个详情 当其中一条详情状态变更为 发货时候 需要判断这个订单下面所有的详情 是不是已经发货了 如果都发货了 修改主订单里面状态为已发货 否则是部分发货 问题 我修改完这个详情状态...
  • 导读: 如何得到一个数据的所有数字型字段??? 问题点数:40 回复次数:22修改删除举报引用回复 本文转自 http://topic.csdn.net/u/20080527/09/778fbc57-81ad-4303-8426-b5f44fe007d3.html
  • 实际分析场景中,你可能会遇到这样的问题:如何批量改变数据源中某一字段的所有值?通常的解决方法是使用数据融合,但解决问题的同时会伴随着一些缺点,例如:数据融合影响整体性能,在融合过程中会建立临时表,增加...
  • 一日一技:修改MongoDB集合中的字段名一日一技是一个每天更新栏目,旨在使用3分钟时间让你...例如有一个集合里面的字段为:name, age, salary, address我要把所有address为北京记录对应salary修改为9999,那...
  • 1.集合有哪些?数据结构?初始长度?扩容机制?哪些是线程安全?hashmap底层原理?集合类型主要有3种:set(集)、...因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。2、Set(无序...
  • 几乎目前所有的问题,都是出在与字符有关的数据列上,大致有几种1、字符串查询(以下如果不特指,都是指中文),搜索一个中文时候,不管是模糊还是精确,往往结果都会有与搜索内容不一致的数据在里面2、编码,现在...
  • 实际分析场景中,你可能会遇到这样的问题:如何批量改变数据源中某一字段的所有值?通常的解决方法是使用数据融合,但解决问题的同时会伴随着一些缺点,例如:数据融合影响整体性能,在融合过程中会建立临时表,增加...
  • 1、把所有的日期时间字段数据0000-00-00 00:00:00 改成null 2、有很多条update语句,要使用事务控制,要么全部执行成功要么回滚 、利用mysql自带系统库information_schema 访问元数据方式快速生成sql语句 ...
  • 实际分析场景中,你可能会遇到这样的问题:如何批量改变数据源中某一字段的所有值?通常的解决方法是使用数据融合,但解决问题的同时会伴随着一些缺点,例如: 数据融合影响整体性能,在融合过程中会建立临时表,...
  • 解决问题:字段类型为char总是占用指定字节长度(末尾好多空白符号),varchar数据类型长度一个汉字占2个字节,内容存储为中文的字段个人建议全部使用nvarchar。 操作说明:打开SQL Server Management Studio,选中你...
  • 查询所有的需要修改数据: SELECT * FROM ppts_personnel ...修改,去掉该字段的一个字符斜杠: update ppts_personnel set avatar=substring(avatar,2,Length(avatar)-1) WHERE avatar LIKE '%/images%'; ...
  • 对于我们技术团队而言,其对应的所有服务器资源和其他相关资源都要释放。释放了 8 台应用服务器;1 台 ES 服务器;删除分布式定时任务中心相关的业务任务;备份并删除 MySQL 数据库;删除 Redis 中相关的业务缓存...
  • 在django restful开发过程中,对于前端传来patch请求,这时候我们往往只是修改部分字段。但是通常情况下我们又不得不去获得所有数据更改,或者用if else 进行匹配修改。这过程无疑是枯燥且效率低下。 注...
  • 查看时,选择是用table列表查看(通过分页取出的数据),现在问题是我想在新建时给一个序号(或编辑时能更改序号),以便显示时能按一定顺序。 例如,已有: 财务员,人事主管,销售部经理,销售员 4种职务...
  • 前奏 最近遇到一个业务场景,就是在某个特定操作中,需要把两个用户信息合并成...3、把旧userId做条件,来对真个库包含userID表进行数据修改 吐槽自己:很遗憾这个思路最后并没有走通,因为每个用户涉及...
  • 作用是踢除重复数据其中一个_id,让后面删除语句不会删除所有数据 4.使用forEach循环根据_id删除数据 $addToSet 操作符只有在值没有存在于数组中时才会向数组中添加一个值。如果值已经存在于数组中,$addToSet...
  • MongoDB 修改字段

    2020-03-14 09:38:42
    db.getCollection('集合名').update({}, {$rename : {"修改字段名" : "修改字段名"}}, ...{multi:true} 表示 对该集合的所有数据生效 因为mongodb 没有表结构这个概念 一个集合内的数据之间结构相互独立 不统一 ...
  • 由于最近我们的一个网站回购了一个很好域名所有与之相关项目都需要修改;今天接到一个任务将我们会员开通个人网站二级域名换成新域名,看了一下库已开通还很少才2w多,且要换和之前库中的数据很规则形如...
  • 把两个用户信息合并成一个,这个简单2、查询当前库中所有包含userId表3、把旧userId做条件,来对真个库包含userID表进行数据修改吐槽自己:很遗憾这个思路最后并没有走通,因为每个用户涉及的一个积分运算...
  • 也就是说在一张表中会有很多内容,如果想要修改某个字段内容里面相同数据的话... 更新一个字段里面部分内容,指是这个字段里面所有列;比如这个字段第一列里面内容是123asd,第二列是456asdf,想把as换成AS,那...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,287
精华内容 514
关键字:

修改一个字段的所有数据