将字符串分成两部分并选择两个变量

时间:2011-08-05 07:52:25

标签: sql sql-server-2005 tsql

我正在使用SQL Server 2005.我有一个特殊字符:的字符串,如:

XYZ:xyz@mail.com

我想将此字符串分成两个子字符串并选择变量。特殊字符:只是一个分隔符。

@variable1=XYZ
@variable2=xyz@mail.com

请指导我如何做到。

3 个答案:

答案 0 :(得分:2)

如果缺少':',@ v1将为空

DECLARE @v1 varchar(20) 
DECLARE @v2 varchar(20)

DECLARE @s varchar(20)
SET @s = 'XYZ:xyz@mail.com'

SELECT @v1 = stuff(b, len(b),1,''), 
       @v2 = stuff(@s, 1, len(b),'') 
FROM (SELECT left(@s, charindex(':', @s)) b) a

SELECT @v1 v1,@v2 v2

结果:

v1  v2
--- ------------
XYZ xyz@mail.com

答案 1 :(得分:1)

DECLARE @var VARCHAR(100)
SET @var='XYZ:xyz@mail.com'

SELECT 
SUBSTRING(@var, 1, CHARINDEX(':',@var)-1) as var1 -- get part till :
,SUBSTRING(@var, CHARINDEX(':',@var)+1, LEN(@var)) AS var2 -- get part after :

解释:

substring get是从start_position到end_position

的字符串的一部分

SUBSTRING(string,start_position,end_position)

charindex获取字符串中字符的位置

CHARINDEX(character_to_search,string_to_search_in)

http://msdn.microsoft.com/en-us/library/ms187748.aspx

http://msdn.microsoft.com/en-us/library/ms186323.aspx

答案 2 :(得分:1)

字符串划分指南:

  1. 使用CHARINDEX查找:的位置。

  2. 使用SUBSTRING抓取:位置前的所有字符,并将其放入@variable1

  3. 使用SUBSTRING抓取:位置后的所有字符,并将其存储到@variable2

  4. 可能的实施:

    DECLARE @string varchar(max), @variable1 varchar(max), @variable2 varchar(max);
    SET @string = 'XYZ:xyz@mail.com';
    
    SELECT
      @variable1 = SUBSTRING(S, 1, P - 1),
      @variable2 = SUBSTRING(S, P + 1, L - P)
    FROM (
      SELECT
        S = @string,
        P = CHARINDEX(':', @string),
        L = LEN(@string)
    ) s;
    
    SELECT @variable1, @variable2;
    

    输出:

    -------------------- --------------------
    XYZ                  xyz@mail.com
    
相关问题