BRD*_*oid 3 sql-server string substring sql-server-2012
我想拆分一个字符串并获取空格后的值.我可以在空格之前获取值,但是如何在空格之后获取字符串.
DECLARE @string varchar(20)
SELECT @string = 'Test Name'
SELECT SUBSTRING(@string, 0, CHARINDEX(' ', @string))
Run Code Online (Sandbox Code Playgroud)
编辑:我正在使用SQLServer 2012
下面是使用一个版本SUBSTRING,并CHARINDEX事先到SQL Server 2016的SQL Server版本时STRING_SPLIT被引入.
以下任一工作:
SELECT SUBSTRING(@string, CHARINDEX(' ', @string) +1, 20)
SELECT SUBSTRING(@string, CHARINDEX(' ', @string) +1, DATALENGTH(@string) - CHARINDEX(' ', @string) +1 )
Run Code Online (Sandbox Code Playgroud)
根据Rao的评论编辑添加描述
我们需要使用CHARINDEX找到空间的位置(它返回一个表示字符串(空格)开始位置的数字.但是我们要选择的字符串从空格开始,因此我们必须将1(+1)加到我们的SUBSTRING的起始位置,使起始位置变为CHARINDEX('',@ string)+ 1.
SUBSTRING的第三个参数是要选择的字符串的长度,在第一种情况下,我只是假设您指定为varchar(20)的字符串不能超过20个字符,因此我使用20.注意SUBSTRING不会尝试选择超出字符串末尾的字符,因此可以安全地指定长度超过剩余字符数的长度.
我的第二个例子根据总字符串的长度(DATALENGTH)减去我们选择之前的字符数(CHARINDEX + 1)来获取要选择的字符串的长度
| 归档时间: |
|
| 查看次数: |
21781 次 |
| 最近记录: |