web-dev-qa-db-fra.com

Sous-chaîne T-SQL - 3 derniers caractères

Avec T-SQL, comment pourrais-je obtenir les derniers caractères d'une colonne varchar?

Le texte de la colonne est donc IDS_ENUM_Change_262147_190 et j'ai besoin de 190

60
Jared
SELECT RIGHT(column, 3)

C'est tout ce dont vous avez besoin.

Vous pouvez aussi faire LEFT() de la même manière.

Gardez à l'esprit si vous utilisez ceci dans une clause WHERE que la RIGHT() ne peut utiliser aucun index.

100
JNK

Vous pouvez utiliser les deux méthodes:

SELECT RIGHT(RTRIM(columnName), 3)

OR

SELECT SUBSTRING(columnName, LEN(columnName)-2, 3)
15
Elias Hossain

Parce que plus de façons de penser sont toujours bonnes:

select reverse(substring(reverse(columnName), 1, 3))
7
Ben Thul
declare @newdata varchar(30)
set @newdata='IDS_ENUM_Change_262147_190'
select REVERSE(substring(reverse(@newdata),0,charindex('_',reverse(@newdata))))

=== Explication ===

J'ai trouvé plus facile de lire comme ceci:

SELECT
    REVERSE( --4.
        SUBSTRING( -- 3.
            REVERSE(<field_name>),
            0,
            CHARINDEX( -- 2.
                '<your char of choice>',
                REVERSE(<field_name>) -- 1.
            )
        )
    )
FROM
    <table_name>
  1. Inverser le texte
  2. Recherchez la première occurrence d’un caractère spécifique (c’est-à-dire la première occurrence DE FIN du texte). Obtient l'index de ce caractère
  3. Regarde à nouveau le texte inversé. recherche de l'index 0 à l'index de votre personnage. Cela donne la chaîne que vous recherchez, mais en sens inverse
  4. Inversé la chaîne inversée pour vous donner votre sous-chaîne souhaitée
1
user2176274