T-SQL查询等价于trim(从“CRIC2”中拖出“C”)

T-SQL查询等价于trim(从“CRIC2”中拖出“C”),sql,sql-server,Sql,Sql Server,我想放弃变量字符串IS18002TB1C2中“C”的尾随字符 需要相当于 `TRIM` (TRAILING 'C' FROM 'IS18002TBB1C2') 在SQL Server中 预期ans为18002TB1您可以将REVERSE与LEFT和CHARINDEX结合使用 对于假设您通常希望删除从最后一个C开始的子字符串,我们可以尝试在字符串的反面使用CHARINDEX和substring: SELECT col, REVERSE(SUBSTRING(REVER

我想放弃变量字符串IS18002TB1C2中“C”的尾随字符

需要相当于

    `TRIM` (TRAILING 'C' FROM 'IS18002TBB1C2') 
在SQL Server中

预期ans为18002TB1

您可以将REVERSE与LEFT和CHARINDEX结合使用


对于

假设您通常希望删除从最后一个C开始的子字符串,我们可以尝试在字符串的反面使用CHARINDEX和substring:

SELECT
     col,
     REVERSE(SUBSTRING(REVERSE(col),
             CHARINDEX('C', REVERSE(col)) + 1,
             LEN(col))) AS col_out
FROM yourTable;

现在,样本数据和预期输出将更加有用!第一次或第二次C轨道-第二次Cif有两个以上C,您的预期结果是什么?预期结果是CRI,因为值是18002TB1C2,预期ans是18002TB1,但它给出的是18002TBB。第一个是missing@ShankarNaren不,是的,检查演示。是的,很抱歉这是我在声明中的错误。谢谢你的回答,另一个答案是使用较少的函数,因此我选择了它作为回答是的,很抱歉这是我在声明中的错误,请对您的答案添加更多的解释。以下查询选择reversesubstringreverse'ABCCCC',patindex“[^C]',reverse'ABCCCC',len'ABCCCC'执行以下操作。1.把绳子倒过来。2.检查第一个非C模式的位置。3.从该点开始对其进行子串。4.将其反转回原始版本。
SELECT
     col,
     REVERSE(SUBSTRING(REVERSE(col),
             CHARINDEX('C', REVERSE(col)) + 1,
             LEN(col))) AS col_out
FROM yourTable;
select reverse(substring(reverse('ABCCCC')                 
                        ,patindex('%[^C]%',reverse('ABCCCC'))
                        ,len('ABCCCC')
                        )
               )