如何在 SQL 中使用 LEFT & RIGHT 函数来获取最后 3 个字符?

问题描述 投票:0回答:5

我有一个

Char(15)
字段,在这个字段中我有以下数据:

94342KMR
947JCP
7048MYC

我需要分解这个,我需要得到最后右边的 3 个字符,我需要得到左边的所有字符。我的问题是左侧的代码并不总是如您所见的相同长度。

如何在 SQL 中完成此操作?

谢谢你

sql sql-server t-sql
5个回答
14
投票
SELECT  RIGHT(RTRIM(column), 3),
        LEFT(column, LEN(column) - 3)
FROM    table

使用

RIGHT
w/
RTRIM
(以避免固定长度列的复杂性),并将
LEFT
LEN
结合使用(仅获取您需要的内容,最后 3 个字符除外)。

如果存在长度为 <= 3, then you're probably going to have to use a

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)

1
投票

这里有一个替代方案,使用

SUBSTRING

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

用小提琴


1
投票
select right(rtrim('94342KMR'),3)

这将获取最后 3 个正确的字符串。

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

这将获取剩余的角色。


0
投票

选择右侧(rtrim('94342KMR'),3) 这将获取最后 3 个正确的字符串。

选择子字符串(rtrim('94342KMR'),1,len('94342KMR')-3) 这将获取剩余的角色。

© www.soinside.com 2019 - 2024. All rights reserved.