选择一个空间的数据?

时间:2012-11-20 19:57:28

标签: sql-server tsql

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

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

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

我尝试使用LEFT,RIGHT,LEN来解决这个问题,但是在我的例子中找不到使用变量字符串长度的方法。

谢谢!

5 个答案:

答案 0 :(得分:75)

您可以使用LEFTCHARINDEX的组合来查找第一个空格的索引,然后抓住其左侧的所有内容。

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

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

SELECT LEFT(YourColumn, CASE WHEN charindex(' ', YourColumn) = 0 THEN 
    LEN(YourColumn) ELSE charindex(' ', YourColumn) - 1 END)

答案 1 :(得分:2)

select left(col, charindex(' ', col) - 1)

答案 2 :(得分:1)

如果您有时没有空格,则不想使用CASE语句

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

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

答案 3 :(得分:1)

如果第一列总是相同的大小(包括空格),那么您可以只取这些字符(通过LEFT)并清理空格({{1 }}):

RTRIM

或者,您可以提取第二个(或第三个等)列(使用SELECT RTRIM(LEFT(YourColumn, YourColumnSize)) ):

SUBSTRING

此方法的一个好处(尤其是SELECT RTRIM(SUBSTRING(YourColumn, PreviousColumnSizes, YourColumnSize)) 是计算的结果)是YourColumn仅指定一次。

答案 4 :(得分:0)

当CHARINDEX('',, YOUCOLUMN)= 0然后是YOUCOLUMN时 剩下的其他(YOUCOLUMN,CHARINDEX('',YOUCOLUMN))结束