请教个提取字段中数据的问题

Jofan 2008-01-04 10:51:12
数据中有一列是这样的
___________________
姓名*职位*电话*邮箱
___________________

如:
________________________________
张三*教师*1234567*zhang@123.net
________________________________

我现在要用select把这一列的数据提取出来变成4列
请问这个语句怎么写,请会的朋友赐教!

...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jofan 2008-01-04
  • 打赏
  • 举报
回复
太快了,已经解决。谢谢上面几位:)
pt1314917 2008-01-04
  • 打赏
  • 举报
回复

create table kk(name varchar(100))
insert into kk select '张三*教师*1234567*zhang@123.net'
insert into kk select '小毛*学生*8888888*zhang@126.net'


alter function kkkk(@name varchar(100))
returns varchar(500)
as
begin
declare @sql varchar(500)
set @sql=replace(@name+'*','*',''' columns,''')
return ''''+left(@sql,len(@sql)-2)
end


declare @sql varchar(8000)
select @sql=isnull(@sql+' union select ','select ')+dbo.kkkk(name) from kk
exec(@sql)

dawugui 2008-01-04
  • 打赏
  • 举报
回复
[code=SQL]create table tb(col varchar(50))
insert into tb values('姓名*职位*电话*邮箱')
insert into tb values('张三*教师*1234567*zhang@123.net')
go
select
col1 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),4),'$','.'),
col2 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),3),'$','.'),
col3 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),2),'$','.'),
col4 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),1),'$','.')
from tb

drop table tb

/*
col1 col2 col3 col4
-------------------------------------
姓名 职位 电话 邮箱
张三 教师 1234567 zhang@123.net

(2 行受影响)

*/
[/code]
dawugui 2008-01-04
  • 打赏
  • 举报
回复
create table tb(col varchar(50))
insert into tb values('姓名*职位*电话*邮箱')
insert into tb values('张三*教师*1234567*zhang@123.net')
go
select
col1 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),4),'$','.'),
col2 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),3),'$','.'),
col3 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),2),'$','.'),
col4 = replace(PARSENAME(replace(replace(col,'.','$'),'*','.'),1),'$','.')
from tb

drop table tb

/*
col1 col2 col3 col4
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
姓名 职位 电话 邮箱
张三 教师 1234567 zhang@123.net

(2 行受影响)

*/
dobear_0922 2008-01-04
  • 打赏
  • 举报
回复
create table tb(col varchar(64))
insert tb select '张三*教师*1234567*zhang@123.net'


select parsename(replace(replace(col,'.','#'),'*','.'),4)
,parsename(replace(replace(col,'.','#'),'*','.'),3)
,parsename(replace(replace(col,'.','#'),'*','.'),2)
,replace(parsename(replace(replace(col,'.','#'),'*','.'),1),'#','.')
from tb

/*
-------- ------------- ------------- ----------------------------
张三 教师 1234567 zhang@123.net
(1 row(s) affected)
*/

drop table tb
dawugui 2008-01-04
  • 打赏
  • 举报
回复
create table tb(col varchar(50))
insert into tb values('姓名*职位*电话*邮箱')
insert into tb values('张三*教师*1234567*zhang@123.net')
go
select
PARSENAME(replace(col,'*','.'),4),
PARSENAME(replace(col,'*','.'),3),
PARSENAME(replace(col,'*','.'),2),
PARSENAME(replace(col,'*','.'),1)
from tb

drop table tb

/*

-------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
姓名 职位 电话 邮箱
NULL NULL NULL NULL

(2 行受影响)
*/
-狙击手- 2008-01-04
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s = '张三*教师*1234567*zhang@123.net '

select @s = replace(@s,'*',''',''')

exec('select '''+@s+'''')
/*

---- ---- ------- --------------
张三 教师 1234567 zhang@123.net
*/
dawugui 2008-01-04
  • 打赏
  • 举报
回复
select 
PARSENAME(replace(col,'*','.'),4),
PARSENAME(replace(col,'*','.'),3),
PARSENAME(replace(col,'*','.'),2),
PARSENAME(replace(col,'*','.'),1)
from tb
-狙击手- 2008-01-04
  • 打赏
  • 举报
回复
/*
---- ---- ---- ----
姓名 职位 电话 邮箱

*/
-狙击手- 2008-01-04
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s = '姓名*职位*电话*邮箱'

select @s = replace(@s,'*',''',''')

exec('select '''+@s+'''')

34,587

社区成员

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

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