分隔字符串,求救啊!!!!

grn0515 2013-03-19 03:14:46
比如有个字符串是'xx.exe|0',我要把这个字符串变成两个字段然后一条插入语句,进入数据库。这字符串怎么分隔成两个字段呢?

DECLARE @TempStr VARCHAR(20)
SET @TempStr ='xx.exe|0'

DECLARE @Temp TABLE
(
[name] VARCHAR(10)
[value] tinyint
)
insert into @Temp ([name],[value])
-- 这里怎么写?
最后查询
select * from @Temp
--结果
xx.eee 0
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
什么递归 xml substring 等方法 都有弊端 最好的是 避免字符串的拆分
  • 打赏
  • 举报
回复
引用 5 楼 yyantifa 的回复:
引用 2 楼 TravyLee 的回复:SQL code?123456789101112131415161718DECLARE @TempStr VARCHAR(20)SET @TempStr ='xx.exe|0' DECLARE @Temp TABLE ( [name] VARCHAR(10), [value] tinyint)insert into @Te……
你是什么情况 我这解析字符串的方法多 http://blog.csdn.net/travylee/article/details/7724016
yyantifa 2013-03-19
  • 打赏
  • 举报
回复
引用 2 楼 TravyLee 的回复:
SQL code?123456789101112131415161718DECLARE @TempStr VARCHAR(20)SET @TempStr ='xx.exe|0' DECLARE @Temp TABLE ( [name] VARCHAR(10), [value] tinyint)insert into @Tempselect left(@TempS……
如果字符串都是这种的('xx.exe|0)有一个'|',可以通过这种方式来截取
唐诗三百首 2013-03-19
  • 打赏
  • 举报
回复

DECLARE @TempStr VARCHAR(20)
SET @TempStr ='xx.exe|0'

 DECLARE @Temp TABLE 
 (
   [name] VARCHAR(10),
   [value] tinyint
 )
 
insert into @Temp ([name],[value])
  select substring(@TempStr,1,charindex('|',@TempStr)-1),
         substring(@TempStr,charindex('|',@TempStr)+1,20)

select * from @Temp

/*
name       value
---------- -----
xx.exe     0

(1 row(s) affected)
*/
szm341 2013-03-19
  • 打赏
  • 举报
回复
insert into @Temp ([name],[value]) select left(@TempStr,charindex('|',@TempStr)-1),substring(@TempStr,charindex('|',@TempStr)+1,len(@TempStr))
  • 打赏
  • 举报
回复
DECLARE @TempStr VARCHAR(20)
SET @TempStr ='xx.exe|0'

 DECLARE @Temp TABLE 
(
   [name] VARCHAR(10),
   [value] tinyint
)
insert into @Temp
select left(@TempStr,charindex('|',@TempStr)-1),right(@TempStr,len(@TempStr)-charindex('|',@TempStr))
-- 这里怎么写?

select * from @Temp
/*
name	value
----------------
xx.exe	0
*/
發糞塗牆 2013-03-19
  • 打赏
  • 举报
回复
转成表然后一次性插入

/****** Object:  UserDefinedFunction [dbo].[fnSys_SplitString]    Script Date: 03/19/2013 15:22:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*
功能说明:传入字符串跟分割符('''SGHE00000003'',''SGHE00000004'',''SGHE00000005'''),返回一个Table
*/
ALTER function [dbo].[fnSys_SplitString]
(
	---字符串分割
	@Str varchar(max), --传入的字符串
	@SeprateStr varchar(10)--分隔符
)
Returns @temp table(Code varchar(100)) --返回一个Table
As 
Begin
	Declare @i int	
	Set @Str=REPLACE(@str,'''','')
	Set @Str =rtrim(ltrim(@Str ))
	Set @i=charindex(@SeprateStr,@Str )
	While @i>=1
	Begin
		Insert @temp values(left(@Str ,@i-1))
		Set @Str =substring(@Str ,@i+1,len(@Str )-@i)
		Set @i=charindex(@SeprateStr,@Str )
	End
	If @Str <>'' 
		Insert @temp values(@Str )
	Return 
End

34,575

社区成员

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

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