Подтвердить что ты не робот

Выбрать данные до пробела?

У меня есть поле базы данных MSSQL, которое выглядит следующим образом:

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

Есть ли способ выбрать первый набор символов? В основном выберите все символы до первого пространства строки?

Я попытался объединиться с LEFT, RIGHT, LEN, но не смог найти способ сделать это с переменной длиной строки, как в моем примере.

Спасибо!

4b9b3361

Ответ 1

Вы можете использовать сочетание LEFT и CHARINDEX, чтобы найти индекс первого пространства, а затем захватить все, что слева от него.

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

И в случае, если какой-либо из ваших столбцов не имеет места в них:

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

Ответ 2

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

Ответ 3

Альтернатива, если у вас иногда нет пробелов, не требуется использовать оператор CASE

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

Это работает в SQL Server, и в соответствии с моим поиском MySQL имеет те же функции

Ответ 4

Если первый столбец всегда имеет тот же размер (включая пробелы), вы можете просто взять эти символы (через LEFT) и очистить пробелы (с помощью RTRIM):

SELECT RTRIM(LEFT(YourColumn, YourColumnSize))

В качестве альтернативы вы можете извлечь второй (или третий и т.д.) столбец (используя SUBSTRING):

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

Одно из преимуществ этого подхода (особенно если YourColumn является результатом вычисления) заключается в том, что YourColumn задается только один раз.