首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

分隔字符串,

2013-03-21 
分隔字符串,求救啊!!!!比如有个字符串是xx.exe|0,我要把这个字符串变成两个字段然后一条插入语句,进入数

分隔字符串,求救啊!!!!
比如有个字符串是'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

[解决办法]
转成表然后一次性插入


/****** 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

[解决办法]
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
/*
namevalue
----------------
xx.exe0
*/

[解决办法]
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 ([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)
*/

热点排行