我有一个MSSQL数据库字段,如下例所示:
u129 james
u300 chris
u300a jim
u202 jane
u5 brian
u5z brian2
有没有办法选择第一组字符?基本上选择所有字符直到第一个行空间?
我尝试使用LEFT,RIGHT,LEN来解决这个问题,但是在我的例子中找不到使用变量字符串长度的方法。
谢谢!
答案 0 :(得分:75)
您可以使用LEFT
和CHARINDEX
的组合来查找第一个空格的索引,然后抓住其左侧的所有内容。
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))结束