我整个上午一直在寻找这个。
我对SQL Server的了解不是很好,而且我没有答案。
具体示例包括:City-Of-Style
或Part1-Part2
。
我需要将这些示例拆分为City
和Of-Style
以及Part1
和Part2
。
我想出了这段代码,但是如果字符串包含' - ',它会切换part1和part2。
PARSENAME(REPLACE('sample-string', '-', '.'), 1))
非常感谢任何有关实现此功能的帮助(最好没有200行功能)。
答案 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
输出:国王