sqlserver 将 “用 特定字符 分隔的一个字段” 拆分成多个字段,然后两个表之间数据更新
将源TXT文件sourceFile_table.txt导入数据库,生成新表dbo.sourceFile_table。新增字段lon、lat、shi、xian
源表dbo.sourceFile_table
源表dbo.GeographyInfo
SQL语句:
--删除表dbo.sourceFile_table中 双隐号
UPDATE sourceFile_table
SET [s_id] = REPLACE([s_id],'"','') ,
[s_lon_lat] = REPLACE([s_lon_lat],'"','') ,
[s_shi_xian] = REPLACE([s_shi_xian],'"','')
SELECT * FROM sourceFile_table
--查询表dbo.sourceFile_table:将逗号分隔的一个字段拆分成多个字段 ;将空格分隔的一个字段拆分成多个字段
SELECT TOP 1000 [s_id],
[s_lon_lat],
[s_shi_xian],
substring([s_lon_lat],1,charindex(',',[s_lon_lat])) lon,
substring([s_lon_lat],charindex(',',[s_lon_lat]) +1,30) lat,
substring(s_shi_xian,1,charindex(' ',s_shi_xian)) shi,
substring(s_shi_xian,charindex(' ',s_shi_xian) +1,30) xian
from sourceFile_table
--更新表dbo.sourceFile_table:将逗号分隔的一个字段拆分成多个字段 ;将空格分隔的一个字段拆分成多个字段
UPDATE sourceFile_table
SET lon=substring([s_lon_lat],1,charindex(',',[s_lon_lat])),
lat=substring([s_lon_lat],charindex(',',[s_lon_lat]) +1,30),
shi=substring([s_shi_xian],1,charindex(' ',[s_shi_xian])),
xian=substring([s_shi_xian],charindex(' ',[s_shi_xian]) +1,30)
SELECT * FROM dbo.sourceFile_table --更新表dbo.sourceFile_table:将拆分后, 字段lon数据中 逗号 删除,字段shi数据中 空格 删除
UPDATE sourceFile_table
SET [lon] = REPLACE([lon],',',''),
[shi] = REPLACE([shi],' ','')
SELECT * FROM dbo.sourceFile_table --更新表dbo.GeographyInfo:两个表之间数据更新,更新表dbo.GeographyInfo中字段shi、xian、lon、lat数据
update GeographyInfo
set GeographyInfo.shi=TS.shi,
GeographyInfo.xian=TS.xian,
GeographyInfo.lon=TS.lon,
GeographyInfo.lat=TS.lat
from GeographyInfo,sourceFile_table TS
where GeographyInfo.rerid=TS.s_id --查询dbo.GeographyInfo:表更新后的数据,最新1000条数据,根据id降序排序
SELECT TOP 1000 [id],
[rerid],
[shi],
[xian],
[lon],
[lat]
FROM [dbo].[GeographyInfo]
order by id desc --删除表dbo.sourceFile_table数据
delete from sourceFile_table
执行结果:
sqlserver》单击数据库》新建查询(N)》复制SQL语句到空白处》 !执行(X)
。。。
-----------------------------------------------------------------------简单示例1-----------------------------------------------------------------------
SQL语句1:
--新建表test
create table test(pp varchar(30))
go
select * from test --新增数据
insert into test values('耐克 DS001'),('安踏 AT002'),('阿迪达斯 AD009')
go
select * from test --查询表test:将空格分隔的一个字段拆分成多个字段
select
substring(pp,1,charindex(' ',pp))pp1,
substring(pp,charindex(' ',pp) +1,30) pp2
from test
go --删除表test
drop table test
go
执行结果:
sqlserver》单击数据库》新建查询(N)》复制SQL语句到空白处》 !执行(X)
SQL语句2:
--
SELECT LEFT(商品名称, CHARINDEX(' ', 商品名称 + ' ') - 1) AS 品牌 ,
STUFF(商品名称, 1, CHARINDEX(' ', 商品名称 + ' ') + 1, '') AS 商品代码
FROM ( VALUES ( '耐克 DS001'), ( '安踏 AT002'), ( '阿迪达斯 AD009') ) t ( 商品名称 ); --
select '耐克 DS001' as col1 into #Idontkonwthis
select left(col1,(select charindex(' ',col1))), substring(col1,(select charindex(' ',col1)),(select len(col1))) from #Idontkonwthis
执行结果:
-----------------------------------------------------------------------简单示例2-----------------------------------------------------------------------
SQL语句:
--①横向
declare @str1 varchar(max)
set @str1='福尔摩斯,tellme,他,在哪里'
set @str1=REPLACE(@str1,',',''',''')
exec ('select '''+@str1+'''') --②竖向
declare @str2 varchar(max)
set @str2='福尔摩斯,tellme,他,在哪里'
set @str2='select '''+replace(@str2,',',''' as col union all select ''')
--print @str
exec(@str2+'''') --xml解法
declare @a nvarchar(max)
declare @xml xml
set @a='aa;bb;cc;dd'
set @xml=cast('<root><col val="'+replace(@a,';','" /><col val="')+'"></col></root>' as XML)
-- select @xml
select n=t.c.value('@val','varchar(255)') from @xml.nodes('/root/col') t(c)
执行结果:
sqlserver》单击数据库》新建查询(N)》复制SQL语句到空白处》 !执行(X)
sqlserver 将 “用 特定字符 分隔的一个字段” 拆分成多个字段,然后两个表之间数据更新的更多相关文章
- hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2098 分拆素数和 Time Limit: 1000/1000 MS (Java/Others) ...
- js格式化input输入框内容(每几位分一组,并使用特定字符分隔)
<html> <head> <title></title> </head> <body> <input id=" ...
- javascript 特定字符分隔字符串函数
function fn(num,div,token){//num需要分割的数字,div多少位分割 token分割字符 num=num+'',div=div||3,token=token||',' re ...
- String的Split使用方法(以特定字符分隔,提取所需信息)
此处复制一串以空格分隔的数字,提取数字进行排序 int[] a = new int[10]; string input = Console.ReadLine();//获取用户输入的字符串 char[] ...
- sql server中将一个字段根据某个字符拆分成多个字段显示
sql server 数据库中某张表(Person)的数据信息是: ID Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址信息显示形式改 ...
- 9. 一个list拆分成多个list返回
/** * @Title: splitList * @Description: 1个list分割成多个list * @param targe 原list * @para ...
- 【转载】SQL语句用一个表的数据更新另一个表
在Sqlserver的维护更新操作中,有时候涉及到Update操作,其中有一种情况是根据特定的条件,以一个表中的数据更新另一个表的数据,此时涉及到两个表之间的关系以及操作,此处介绍2种更新方法. (1 ...
- SSAS的维度表之间的关系只能有一个不能有多个
我们在SSAS中创建维度的时候,有时候可能一个维度需要用到多个表的字段作为维度属性,那么这多个表之间势必存在关联关系,但是切记维度表之间的关联关系有且只能有一个不能有多个,下面我们来看一个例子. 现在 ...
- 一个通用的php正则表达式匹配或检测或提取特定字符类
在php开发时,日常不可或缺地会用到正则表达式,可每次都要重新写,有时忘记了某一函数还要翻查手册,所以,抽空写了一个关于日常所用到的正则表达式区配类,便于随便移置调用.(^_^有点偷懒). /*/ ...
随机推荐
- Java gc中的那些事
我们已经知道Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆栈进行内存分配.为了进行高效的垃圾回收,虚拟机把堆内存划分成新生代年代(旧一代)和永久代(永久代)3个区域. 新生代 新生 ...
- Xamarin.Android 记住账号
1.存储登陆信息 if(login_cb_user.Checked) { ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPr ...
- Android快速实现二维码扫描--Zbar
Android中二维码扫描的最常用库是zxing和zbar,上一篇<Android快速实现二维码扫描–Zxing>介绍了Zxing.这次说Zbar,Zbar速度极快,我就比较常用,项目地址 ...
- DeepLab 使用 Cityscapes 数据集训练模型
原文地址:DeepLab 使用 Cityscapes 数据集训练模型 0x00 操作环境 OS: Ubuntu 16.04 LTS CPU: Intel® Core™ i7-4790K GPU: Ge ...
- 高可用Hadoop平台-Hue In Hadoop
1.概述 前面一篇博客<高可用Hadoop平台-Ganglia安装部署>,为大家介绍了Ganglia在Hadoop中的集成,今天为大家介绍另一款工具——Hue,该工具功能比较丰富,下面是今 ...
- 理解极大似然估计(MLE)
极大似然估计学习时总会觉得有点不可思议,为什么可以这么做,什么情况才可以用极大似然估计.本文旨在通俗理解MLE(Maximum Likelihood Estimate). 一.极大似然估计的思想与举例 ...
- rtsp信令交互流程
- springboot+cloud 学习(二)应用间通信Feign(伪RPC,实则HTTP)
在微服务中,使用什么协议来构建服务体系,一直是个热门话题. 争论的焦点集中在两个候选技术: RPC or Restful Restful架构是基于Http应用层协议的产物,RPC架构是基于TCP传输 ...
- Shell 实例:备份最后一天内所有修改过的文件
在一个"tarball"中(经过 tar 和 gzip 处理过的文件)备份最后 24 小时之内当前目录下所有修改的文件. 程序代码如下: #!/bin/bash BACKUPFIL ...
- vuex学习及使用
什么是vuex? 在SPA单页面组件的开发中vuex称为状态管理:简单的理解就是你在state中定义了一个数据之后,你可以在所在项目中的任何一个组件里进行获取.进行修改,并且你的修改可以得到全局的响应 ...