不知道如何拆分成列

yaoyaogghaha 2006-06-05 09:28:15
表A,内容如下:
RMANumber
--------------------------
QL_001,IEOOP,UG_Q001D,KDS99

就是表在有RMANumber字段,RMANumber的值是QL_001,IEOOP,UG_Q001D,KDS99.我想让它以逗号为准把它分成几例. 结果如下:
例1 例2 例3 例4
---- ----- ----- -----
QL_001 IEOOP UG_Q001D KDS99
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dnvodc 2006-06-05
  • 打赏
  • 举报
回复
QL_001 IEOOP UG_Q001D KDS99
dnvodc 2006-06-05
  • 打赏
  • 举报
回复
Create function str_split(@Str varchar(200))
Returns Varchar(400)
As
Begin
Declare @tmpStr varchar(400)
Declare @p int
Select @tmpStr=''
while @str<>''
Begin
select @p=charindex(',',@Str)
if @p>0
Begin
Select @tmpStr=@tmpStr+''''+ left(@Str,@p-1) +''','
Select @Str=right(@Str,len(@Str)-@P)
end
Else
Begin
Select @tmpStr=@tmpStr+''''+ @Str +''''
Select @Str=''
End

end
select @tmpStr='Select ' +@tmpStr
Return @tmpStr

end

declare @strsplit varchar(500)
Select @strsplit=dbo.str_split('QL_001,IEOOP,UG_Q001D,KDS99')
exec (@strsplit)
zjcxc 元老 2006-06-05
  • 打赏
  • 举报
回复
-- 结果

例1 例2 例3 例4
QL_001 IEOOP UG_Q001D KDS99
zjcxc 元老 2006-06-05
  • 打赏
  • 举报
回复
-- 示例数据
DECLARE @t TABLE(RMANumber varchar(100))
INSERT @t
SELECT RMANumber = 'QL_001,IEOOP,UG_Q001D,KDS99'

-- 分拆处理
SELECT 例1, 例2,
例3 = LEFT(RMANumber, CHARINDEX(',', RMANumber+ ',') - 1),
例4 = STUFF(RMANumber, 1, CHARINDEX(',', RMANumber+ ','), '')
FROM(
SELECT 例1,
例2 = LEFT(RMANumber, CHARINDEX(',', RMANumber+ ',') - 1),
RMANumber = STUFF(RMANumber, 1, CHARINDEX(',', RMANumber+ ','), '')
FROM(
SELECT
例1 = LEFT(RMANumber, CHARINDEX(',', RMANumber+ ',') - 1),
RMANumber = STUFF(RMANumber, 1, CHARINDEX(',', RMANumber+ ','), '')
FROM @t
)A
)AA
newmcz 2006-06-05
  • 打赏
  • 举报
回复
不知道你是必须要SQL来操作还是其他也可以

一种是你可以把这个字段导出到文本,然后再导入,以“,”号分割导入的字段就可以了
另一种,就是你先添加4个空字段,写个SQL语句选第一个逗号前的给第一个空字段,第二。。。
你看看SQL的字符操作函数就好解决了。
findsth 2006-06-05
  • 打赏
  • 举报
回复
佩服。

34,590

社区成员

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

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