49

我有一个 MSSQL 数据库字段,如下例所示:

u129  james
u300  chris
u300a jim
u202  jane
u5    brian
u5z   brian2

有没有办法选择第一组字符?基本上选择所有字符直到第一行空格?

我尝试过使用 LEFT、RIGHT、LEN,但找不到像我的示例中那样使用可变字符串长度的方法。

谢谢!

4

4 回答 4

112

您可以使用LEFT和的组合CHARINDEX来查找第一个空格的索引,然后抓取该空格左侧的所有内容。

 SELECT LEFT(YourColumn, charindex(' ', YourColumn) - 1) 

如果您的任何列中没有空格:

SELECT LEFT(YourColumn, CASE WHEN charindex(' ', YourColumn) = 0 THEN 
    LEN(YourColumn) ELSE charindex(' ', YourColumn) - 1 END)
于 2012-11-20T20:00:42.630 回答
3
select left(col, charindex(' ', col) - 1)
于 2012-11-20T20:00:24.987 回答
2

如果第一列的大小始终相同(包括空格),那么您只需获取这些字符(通过LEFT)并清理空格(使用RTRIM):

SELECT RTRIM(LEFT(YourColumn, YourColumnSize))

或者,您可以提取第二(或第三等)列(使用SUBSTRING):

SELECT RTRIM(SUBSTRING(YourColumn, PreviousColumnSizes, YourColumnSize))

这种方法的一个好处(特别是如果YourColumn是计算的结果)YourColumn是只指定一次。

于 2016-07-08T02:40:04.533 回答
1

如果您有时没有空格不想使用 CASE 语句的替代方法

select REVERSE(RIGHT(REVERSE(YourColumn), LEN(YourColumn) - CHARINDEX(' ', REVERSE(YourColumn))))

这适用于 SQL Server,根据我的搜索 MySQL 具有相同的功能

于 2014-08-06T03:49:58.800 回答