функция обрезки sql - PullRequest
       11

функция обрезки sql

0 голосов
/ 17 мая 2018

У меня есть таблица с именем транзакции, в которой есть столбец Customer_Transactions_ID

Теперь значения в этом столбце меняются ниже

AB_EL_205_72330_H

AB_EL_820_23066_E_N

AB_EL_820_23066

Я хочу обрезать все значения, которые начинаютсяс "AB_EL", чтобы сделать их из

AB_EL_820_23066_E_N (or whatever variation of the above) to
AB_EL_820_23066

Так что в основном нет E или H после идентификатора

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

если я правильно понимаю ваше требование. Если текст начинается с ab_el, то обрежьте _e, _l из текста.

DECLARE @txt VARCHAR(100)= 'aqb_el_205_72330_h';

SELECT ISNULL ('ab_el' + CASE КОГДА @txt НРАВИТСЯ 'ab_el%' ТО заменить (заменить (REPLACE (@ txt, 'ab_el', ''), '_e', ''), '_h', '') END, @ TXT);

0 голосов
/ 17 мая 2018

Это приведет к усечению ваших значений до последнего вхождения числа.

SELECT
    Original = T.Customer_Transactions_ID,
    Truncated = SUBSTRING(
        T.Customer_Transactions_ID,
        1,
        LEN(T.Customer_Transactions_ID) - PATINDEX('%[0-9]%', REVERSE(T.Customer_Transactions_ID)) + 1)
FROM
    Transactions AS T
...