比如有个字符串是'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

解决方案 »

  1.   

    转成表然后一次性插入
    /****** 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
      

  2.   

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

  3.   

    insert into @Temp ([name],[value])
    select left(@TempStr,charindex('|',@TempStr)-1),substring(@TempStr,charindex('|',@TempStr)+1,len(@TempStr))
      

  4.   


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

  5.   

    如果字符串都是这种的('xx.exe|0)有一个'|',可以通过这种方式来截取
      

  6.   


    你是什么情况   我这解析字符串的方法多   http://blog.csdn.net/travylee/article/details/7724016
      

  7.   

    什么递归   xml    substring    等方法   都有弊端   最好的是   避免字符串的拆分