将SQL Server中的字符串更改为缩写

jef*_*eff 3 sql t-sql sql-server

如何在某个字符之前从sql查询返回字符串中的所有内容?

我的数据如下:

HD TV HM45VM - HDTV widescreen television set with 45" lcd
Run Code Online (Sandbox Code Playgroud)

我想限制或截断字符串以包括破折号之前的所有内容.

所以最终的结果将是"高清电视HM45VM"

OMG*_*ies 6

使用SUBSTRING,但您必须使用CHARINDEXPATINDEX来获取您想要子字符串停止的字符的位置:

SELECT SUBSTRING('HD TV HM45VM - HDTV widescreen television set with 45" lcd', 
                  0, 
                  CHARINDEX('-', 'HD TV HM45VM - HDTV widescreen television set with 45" lcd'))
Run Code Online (Sandbox Code Playgroud)

要做相反的事情 - 剥去连字符左边的所有内容 - 使用:

SELECT SUBSTRING('HD TV HM45VM - HDTV widescreen television set with 45" lcd', 
                  CHARINDEX('-', 'HD TV HM45VM - HDTV widescreen television set with 45" lcd') + 1,
                  LEN('HD TV HM45VM - HDTV widescreen television set with 45" lcd'))
Run Code Online (Sandbox Code Playgroud)

有效地,将连字符的位置作为起点.然后你可以使用其中之一LENDATALENGTH功能.