Sql 仅在第一次出现字符/分隔符时分割字符串

Sql 仅在第一次出现字符/分隔符时分割字符串,sql,sql-server,string,Sql,Sql Server,String,我整个上午都在找这个 我对SQL Server的了解不是很好,而且我没有答案 具体的例子有:时尚之城或第1-2部分 我需要将这些示例分为City和风格的和Part1和Part2 我找到了这段代码,但是如果字符串包含“-”,它将切换第1部分和第2部分 PARSENAME(REPLACE('sample-string', '-', '.'), 1)) 非常感谢您对我的帮助(最好不要使用200行功能)。如果我理解正确,这将完成工作 如果字符串中没有破折号,则为空。如果有破折号,下面的代码片段将给出第

我整个上午都在找这个

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

具体的例子有:
时尚之城
第1-2部分

我需要将这些示例分为
City
风格的
Part1
Part2

我找到了这段代码,但是如果字符串包含“-”,它将切换第1部分和第2部分

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

非常感谢您对我的帮助(最好不要使用200行功能)。

如果我理解正确,这将完成工作


如果字符串中没有破折号,则为空。如果有破折号,下面的代码片段将给出第一部分,否则将给出整个字符串

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 

在SQL中,可以使用
split\u part
函数

例如,
cast(拆分部分(列“-”,1)作为文本)作为新列

输入:国王adfad adfadd

输出:king

SQL Server v14拆分部分不可用。“不是内置函数”
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