我有一个看起来像下面的例子中的MSSQL数据库字段:选择数据到一个空间?
u129 james
u300 chris
u300a jim
u202 jane
u5 brian
u5z brian2
有没有办法来选择第一字符集?基本上选择所有的字符,直到第一行空格?
我试着用LEFT,RIGHT,LEN搞乱,但是找不到像我的例子那样用可变字符串长度来完成它的方法。
谢谢!
我有一个看起来像下面的例子中的MSSQL数据库字段:选择数据到一个空间?
u129 james
u300 chris
u300a jim
u202 jane
u5 brian
u5z brian2
有没有办法来选择第一字符集?基本上选择所有的字符,直到第一行空格?
我试着用LEFT,RIGHT,LEN搞乱,但是找不到像我的例子那样用可变字符串长度来完成它的方法。
谢谢!
您可以使用LEFT
和CHARINDEX
一个combiation找到第一个空间的索引,然后抓住一切的是左边。
SELECT LEFT(YourColumn, charindex(' ', YourColumn) - 1)
而且在任何情况下,你的列没有在他们的空间:
SELECT LEFT(YourColumn, CASE WHEN charindex(' ', YourColumn) = 0 THEN
LEN(YourColumn) ELSE charindex(' ', YourColumn) - 1 END)
select left(col, charindex(' ', col) - 1)
这种方法的问题是你必须提及'YourColumn'两次,如果'YourColumn'是计算的结果(例如'RIGHT'的结果),这是有问题的 –
的选择,如果你一时没有空格不想使用CASE语句
select REVERSE(RIGHT(REVERSE(YourColumn), LEN(YourColumn) - CHARINDEX(' ', REVERSE(YourColumn))))
这适用于SQL Server,并根据我的搜索MySQL具有相同的功能
如果第一个列总是相同的尺寸(包括空格),那么你可以把这些字符(通过LEFT
)和清理空间(与RTRIM
):
SELECT RTRIM(LEFT(YourColumn, YourColumnSize))
或者,您可以提取第二(或第三等)柱(使用SUBSTRING
):
SELECT RTRIM(SUBSTRING(YourColumn, PreviousColumnSizes, YourColumnSize))
一个这种方法(特别是如果YourColumn
是计算的结果)的好处是,YourColumn
仅指定一次。
@Beth - 请注意编辑,你抹去了我答案的一半。建议我添加引用链接会更有帮助。 – LittleBobbyTables
对不起,LittleBobbyTables,不知道我们有相互竞争的修改。 – Beth
很好的解释,但你失去了一个 - 这也抓住了空间。 – Blorgbeard