Выбрать данные до пробела?
У меня есть поле базы данных MSSQL, которое выглядит следующим образом:
u129 james
u300 chris
u300a jim
u202 jane
u5 brian
u5z brian2
Есть ли способ выбрать первый набор символов? В основном выберите все символы до первого пространства строки?
Я попытался объединиться с LEFT, RIGHT, LEN, но не смог найти способ сделать это с переменной длиной строки, как в моем примере.
Спасибо!
Ответы
Ответ 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
задается только один раз.