我正在使用SQL Server 2005.我有一个特殊字符:
的字符串,如:
XYZ:xyz@mail.com
我想将此字符串分成两个子字符串并选择变量。特殊字符:
只是一个分隔符。
@variable1=XYZ
@variable2=xyz@mail.com
请指导我如何做到。
答案 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)
答案 2 :(得分:1)
字符串划分指南:
使用CHARINDEX
查找:
的位置。
使用SUBSTRING
抓取:
位置前的所有字符,并将其放入@variable1
。
使用SUBSTRING
抓取:
位置后的所有字符,并将其存储到@variable2
。
可能的实施:
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