可能的输入:如何在SQL Server中空白之前获取字符串? ''
的Hello World
啦啦,啦啦
杰克·邦迪
我想进入一个变量字符串的第一个空字符串BEFORE ''。
相应的'你好'或'拉'或'杰克'。
我该如何去做这件事?
可能的输入:如何在SQL Server中空白之前获取字符串? ''
的Hello World
啦啦,啦啦
杰克·邦迪
我想进入一个变量字符串的第一个空字符串BEFORE ''。
相应的'你好'或'拉'或'杰克'。
我该如何去做这件事?
简单(无需处理我的评论)是:
SELECT LEFT(@string, CHARINDEX(' ', @string));
您还需要照顾,其中字符串不包含空白的情况。一种方法是如下,假设@string
最多可有255个字符:
SELECT LEFT(@string, COALESCE(NULLIF(CHARINDEX(' ', @string), 0), 255));
这些会留下拖空间,如果空间中找到。从这里的空间被发现的位置减去一个
SELECT LTRIM(LEFT(@string, COALESCE(NULLIF(CHARINDEX(' ', @string), 0), 255)));
或者:
SELECT LEFT(@string, COALESCE(NULLIF(CHARINDEX(' ', @string)-1, -1), 255));
如果字符串长度未知:'SELECT LEFT(@string,ISNULL(NULLIF(CHARINDEX('',@string) - 1,0),Len(@string)));' – Mike
@Mike字符串长度如何“未知“?当然,变量或列已被定义为最大长度。 –
@Mike与MAX仍然有一个最大(没有双关语意图)。似乎是我的一个边缘案例。通常情况下,如果你不需要,你不想打扰执行昂贵的长度检查。你可以在[SQL Fiddle](http://sqlfiddle.com)上显示这个错误的非空列的repro吗? –
DECLARE @v AS VARCHAR(MAX) = 'Hello world'
SELECT SUBSTRING(@v, 0, CHARINDEX(' ', @v))
重复。如果你需要,你可以很容易地通过
LTRIM()
环绕整个表达式摆脱的那个http://stackoverflow.com/questions/707610/extract-the-first-word-of-a-string-in-a-sql-server-query – BWS当字符串不包含时,你想要发生什么空间? –