У меня есть поле Char(15)
, в этом поле у меня есть следующие данные:
94342KMR
947JCP
7048MYC
Мне нужно разбить его на части, получить последние ПРЯМЫЕ 3 символа и получить все, что находится СЛЕВА. Моя проблема в том, что код слева не всегда одинаковой длины, как вы можете видеть.
Как я могу сделать это в SQL?
Спасибо
SELECT RIGHT(RTRIM(column), 3),
LEFT(column, LEN(column) - 3)
FROM table
Используйте RIGHT
с RTRIM
(чтобы избежать сложностей с колонкой фиксированной длины), и LEFT
в сочетании с LEN
(чтобы брать только то, что вам нужно, освобождая последние 3 символа).
Если когда-нибудь возникнет ситуация, когда длина <= 3, то вам, вероятно, придется использовать оператор CASE
, чтобы вызов LEFT
не оказался жадным.
Вот альтернативный вариант с использованием SUBSTRING
SELECT
SUBSTRING([Field], LEN([Field]) - 2, 3) [Right3],
SUBSTRING([Field], 0, LEN([Field]) - 2) [TheRest]
FROM
[Fields]