T-SQL查询等价于trim(从“CRIC2”中拖出“C”)
我想放弃变量字符串IS18002TB1C2中“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
`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')
)
)