我有一个 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
来查找第一个空格的索引,然后抓取该空格左侧的所有内容。
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)
如果第一列的大小始终相同(包括空格),那么您只需获取这些字符(通过LEFT
)并清理空格(使用RTRIM
):
SELECT RTRIM(LEFT(YourColumn, YourColumnSize))
或者,您可以提取第二(或第三等)列(使用SUBSTRING
):
SELECT RTRIM(SUBSTRING(YourColumn, PreviousColumnSizes, YourColumnSize))
这种方法的一个好处(特别是如果YourColumn
是计算的结果)YourColumn
是只指定一次。
如果您有时没有空格不想使用 CASE 语句的替代方法
select REVERSE(RIGHT(REVERSE(YourColumn), LEN(YourColumn) - CHARINDEX(' ', REVERSE(YourColumn))))
这适用于 SQL Server,根据我的搜索 MySQL 具有相同的功能