Как использовать LEFT & RIGHT Functions в SQL для получения последних 3 символов?

У меня есть поле Char(15), в этом поле у ​​меня есть следующие данные:

94342KMR
947JCP
7048MYC

Мне нужно сломать это, мне нужно получить последние ПРАВЫЕ 3 символа, и мне нужно получить все, что есть в LEFT. Моя проблема в том, что код на LEFT не всегда такой же длины, как вы можете видеть.

Как я могу выполнить это в SQL?

Спасибо

Ответы

Ответ 1

SELECT  RIGHT(RTRIM(column), 3),
        LEFT(column, LEN(column) - 3)
FROM    table

Используйте RIGHT w/ RTRIM (чтобы избежать осложнений с столбцом фиксированной длины) и LEFT в сочетании с LEN (чтобы получить только то, что вам нужно, освободить от последних 3 символов).

если в какой-либо ситуации длина <= 3, вам, вероятно, придется использовать оператор CASE, поэтому вызов LEFT не будет жадным.

Ответ 2

Вы можете использовать RTRIM или указать значение VARCHAR:

SELECT RIGHT(RTRIM(Field),3), LEFT(Field,LEN(Field)-3)

или

SELECT RIGHT(CAST(Field AS VARCHAR(15)),3), LEFT(Field,LEN(Field)-3)

Ответ 3

Здесь альтернатива, использующая SUBSTRING

SELECT
            SUBSTRING([Field], LEN([Field]) - 2, 3) [Right3],
            SUBSTRING([Field], 0, LEN([Field]) - 2) [TheRest]
    FROM 
            [Fields]

с скрипкой

Ответ 4

select right(rtrim('94342KMR'),3)

Это позволит получить последние 3 строки справа.

select substring(rtrim('94342KMR'),1,len('94342KMR')-3)

Это приведет к отображению оставшихся символов.