我有一个类似“企业服务\企业事务与沟通(DP 19)”的日期我想结果是这样的:| A列|B栏|| - -|- -|| 企业服务|企业事务与沟通(DP 19)|我已经尝试使用子字符串,但没有成功,我使用的是Microsoft SQL
jqjz2hbq1#
DECLARE @AData VARCHAR(1000) = 'Corporate Services\Corporate Affairs & Communications(DP19)'; SELECT LEFT(@AData, CHARINDEX('\', @AData) - 1) AS [Column A], SUBSTRING(@AData, CHARINDEX('\', @AData) + 1, LEN(@AData)) AS [Column B];
我使用LEN(@AData)作为Column B中使用的SUBSTRING()函数的Length参数,但使用SUBSTRING() doesn't care,这有点作弊,所以没有坏处,也没有犯规:长度...如果start和length的总和大于expression中的字符数,则返回从start开始的整个值表达式。
LEN(@AData)
Column B
SUBSTRING()
Length
ctehm74n2#
您可以使用PARSENAME
PARSENAME
declare @t table(ch varchar(max)) insert into @t values (N'Corporate Services\Corporate Affairs & Communications(DP19)'); SELECT PARSENAME(REPLACE(ch,'\','.'),2) AS N'Column A' , PARSENAME(REPLACE(ch,'\','.'),1) AS N'Column B' FROM @t
2条答案
按热度按时间jqjz2hbq1#
我使用
LEN(@AData)
作为Column B
中使用的SUBSTRING()
函数的Length
参数,但使用SUBSTRING()
doesn't care,这有点作弊,所以没有坏处,也没有犯规:长度
...如果start和length的总和大于expression中的字符数,则返回从start开始的整个值表达式。
ctehm74n2#
您可以使用
PARSENAME