sql修剪功能

时间:2018-05-17 10:04:13

标签: sql sql-server trim

我有一个名为Transactions的表,其中有一列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 在id&#39>之后

这可能吗?

2 个答案:

答案 0 :(得分:1)

这将截断您的值,直到数字的最后一次出现。

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

答案 1 :(得分:1)

如果我正确理解你的要求。如果文本以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',''),&# 39; _h','')        END,@ TXT);