Подстрока T-SQL-последние 3 символа


используя T-SQL, как я могу получить последние 3 символы столбца varchar?

Итак, текст столбца IDS_ENUM_Change_262147_190 и мне нужно 190

5 54

5 ответов:

SELECT RIGHT(column, 3)

это все, что вам нужно.

вы также можете сделать LEFT() точно так же.

имейте в виду, если вы используете это в WHERE пункт о том, что RIGHT() не может использовать никаких индексов.

вы можете использовать в любом случае:

SELECT RIGHT(RTRIM(columnName), 3)

или

SELECT SUBSTRING(columnName, LEN(columnName)-2, 3)

потому что больше способов думать об этом всегда хорошо:

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

=== объяснение ===

мне было легче читать написанное так:

SELECT
    REVERSE( --4.
        SUBSTRING( -- 3.
            REVERSE(<field_name>),
            0,
            CHARINDEX( -- 2.
                '<your char of choice>',
                REVERSE(<field_name>) -- 1.
            )
        )
    )
FROM
    <table_name>
  1. обратный текст
  2. ищите первое вхождение определенного символа (т. е. первое вхождение из конца текста). Возвращает индекс этого символа
  3. снова смотрит на перевернутый текст. поиск от индекса 0 до индекса вашего Чара. Это дает строку, которую вы ищете, но в обратном порядке
  4. перевернул перевернутую строку, чтобы дать вам желаемая подстрока

Если вы хотите специально найти строки, которые заканчиваются нужными символами, то это поможет вам...

select * from tablename where col_name like '%190'