并把数据分割,只取第二个‘-’以后的数据 ,分别插入对应列中求方法!!!!!!!!!!!!!

Dotar 2012-11-19 10:38:30
表名 tb 列名 ED 下面是数据

ED uc
asd-ew-we-tr
gf-ewr-we-fh
gd-fe-we
gr-gr-gr


想查找ED下的数据, 并把数据分割,只取第二个‘-’以后的数据 ,分别插入uc列中 求方法!!!!!!!!!!!!
...全文
163 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
开启时代 2012-11-20
  • 打赏
  • 举报
回复
引用 1 楼 lixzhong 的回复:
update TB set uc=SUBSTRING(ED,charindex('-',ED)+1,len(ED)-charindex('-',ED)+1)
第一个能取出来 第二个还远吗
xiaoqi7456 2012-11-20
  • 打赏
  • 举报
回复
CREATE TABLE tb(ed varchar(40),uc varchar(40))
INSERT INTO tb SELECT 'asd-ew-we-tr','' UNION all
SELECT 'gf-ewr-we-fh','' UNION all
SELECT 'gd-fe-we','' UNION all
SELECT 'gr-gr-gr',''

UPDATE tb SET uc=
 RIGHT(ed,(len(ed)-charindex('-',ed))-charindex('-',RIGHT(ed,len(ed)-charindex('-',ed)))) FROM tb

SELECT * FROM tb
jiangshun 2012-11-20
  • 打赏
  • 举报
回复
--> 测试数据:[ED]
if object_id('[ED]') is not null drop table [ED]
GO
create table [ED]([col] varchar(12),uc VARCHAR(20))
insert [ED](col)
select 'asd-ew-we-tr' union all
select 'gf-ewr-we-fh' union all
select 'gd-fe-we' union all
select 'gr-gr-gr'

UPDATE ED
SET
	uc = PARSENAME(STUFF(col,CHARINDEX('-',col,CHARINDEX('-',[col])+1),1,'.'),1)

SELECT * FROM ED e

/*
col          uc
------------ --------------------
asd-ew-we-tr we-tr
gf-ewr-we-fh we-fh
gd-fe-we     we
gr-gr-gr     gr

(4 行受影响)

*/

drop table [ED]
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :TravyLee(物是人非事事休,欲语泪先流!)
-- Date    :2012-11-20 09:07:19
-- Version:
--      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
--	Jul  9 2008 14:43:34 
--	Copyright (c) 1988-2008 Microsoft Corporation
--	Developer Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[test]
if object_id('[test]') is not null drop table [test]
go 
create table [test]([ED] varchar(12),[uc] varchar(10))
insert [test]
select 'asd-ew-we-tr',null union all
select 'gf-ewr-we-fh',null union all
select 'gd-fe-we',null union all
select 'gr-gr-gr',null
go

update test
set [uc]=right([ED],len([ED])-charindex('-',[ED],charindex('-',[ED])+1))
/*
ED	uc
asd-ew-we-tr	we-tr
gf-ewr-we-fh	we-fh
gd-fe-we	we
gr-gr-gr	gr
*/
win7cc 2012-11-20
  • 打赏
  • 举报
回复
ED uc asd-ew-we-tr gf-ewr-we-fh gd-fe-we gr-gr-gr ------------ 你的题目,我也不懂。 但是,你首先要学会,取得 we-tr we-fh 网络有例子,你如果要做SQL开发,就要专心全面学习。 你问了也没用,你自己没去研究。 然后,你怎么把 一列插入 另一列。 ======================================================== 由这些例子,你还需要复习哪些内容? 1.对字符串的处理 2.对数据插入,查询等 你没复习这些,楼上这些人给你答案,你以后还是不懂。
还在加载中灬 2012-11-20
  • 打赏
  • 举报
回复
--以下是测试数据
use tempdb
go
if not OBJECT_ID('tempdb..#tb') IS NULL
drop table #tb
CREATE TABLE #tb(ED varchar(50),uc varchar(50) null)
insert into #tb(ED)
select 'asd-ew-we-tr' union all
select 'gf-ewr-we-fh' union all
select 'gd-fe-we' union all
select 'gr-gr-gr'
--以下是插入语句 -将#tb换掉即可
update #tb
 set
 uc=SUBSTRING(ED,CHARINDEX('-',ED,CHARINDEX('-',ED)+1)+1,lEN(ED)-CHARINDEX('-',ED,CHARINDEX('-',ED)+1)+1)
 --以下是查看效果
select * from #tb
/*
ED	uc
asd-ew-we-tr	we-tr
gf-ewr-we-fh	we-fh
gd-fe-we	we
gr-gr-gr	gr
*/
xuam 2012-11-20
  • 打赏
  • 举报
回复
楼上的都是从第一个'-'取数吧?楼主要从第二个
發糞塗牆 2012-11-19
  • 打赏
  • 举报
回复
--DECLARE ed VARCHAR(128)
 --SET ed='asd-ew-we-tr'
 --如果uc是别的表的列:
 INSERT INTO xx (uc)
 SELECT SUBSTRING(ed,CHARINDEX('-',ed,PATINDEX('%-%',ed))+1,LEN(ed)-CHARINDEX('-',ed,PATINDEX('%-%',ed)))
 FROM ed
 
 --如果uc在用一个表:
 UPDATE TB
 SET uc=SUBSTRING(ed,CHARINDEX('-',ed,PATINDEX('%-%',ed))+1,LEN(ed)-CHARINDEX('-',ed,PATINDEX('%-%',ed)))
开启时代 2012-11-19
  • 打赏
  • 举报
回复
update TB set uc=SUBSTRING(ED,charindex('-',ED)+1,len(ED)-charindex('-',ED)+1)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧