仅在第一次出现的字符/分隔符时拆分字符串

时间:2012-11-17 13:11:53

标签: sql sql-server string

我整个上午一直在寻找这个。

我对SQL Server的了解不是很好,而且我没有答案。

具体示例包括:City-Of-StylePart1-Part2

我需要将这些示例拆分为CityOf-Style以及Part1Part2

我想出了这段代码,但是如果字符串包含' - ',它会切换part1和part2。

PARSENAME(REPLACE('sample-string', '-', '.'), 1))

非常感谢任何有关实现此功能的帮助(最好没有200行功能)。

3 个答案:

答案 0 :(得分:21)

如果我理解正确,这将完成这项工作; Click here for the fiddle

DECLARE @s VARCHAR(50)= 'City-Of-Style'

SELECT SUBSTRING(@s,0,CHARINDEX('-',@s,0)) AS firstPart,
    SUBSTRING(@s,CHARINDEX('-',@s,0)+1,LEN(@s)) AS secondPart

答案 1 :(得分:2)

如果字符串中没有短划线,则会出现空白。如果有破折号,则下面的代码段为您提供第一部分,否则为整个字符串。

DECLARE @TextIn VARCHAR(50)= 'City-Of-Style'
DECLARE @TextOut VARCHAR(500)
SELECT CASE WHEN CHARINDEX('-',@TextIn)>0 THEN SUBSTRING(@TextIn,0,CHARINDEX('-',@TextIn,0)) ELSE @TextIn END 

答案 2 :(得分:1)

在SQL中,可以使用split_part函数。

例如cast(split_part(column,'-',1) as text) as new_column

输入:king-adfad-adfadd
输出:国王