我有一个结果集,我想修剪一个2位数的后缀。字符串将始终具有不同的长度,但后缀将始终是由“ - ”分隔的两位数。
示例:
APPTR-W302-01
NRSB-8920-09
现在我正在使用以下内容。这是一个黑客,因为'20'参数是任意的。
REVERSE(SUBSTRING(REVERSE(COURSENAME),4,20))
有更好的方法吗?
答案 0 :(得分:10)
后缀总是' - ##'吗?如果后缀长度没有改变,
Left(COURSENAME,LEN(COURSENAME)-3)
答案 1 :(得分:1)
以下代码显示了三种在T-SQL中功能相同的方法。恕我直言,“左”方法是最可读的。
DECLARE @courseName VARCHAR(20)
SET @courseName = 'APPTR-W302-01' -- we need to trim the trailing 2 digits and dash
SELECT
SUBSTRING(@courseName, 1, LEN(@courseName) - 3),
LEFT(@courseName, LEN(@courseName) - 3),
REVERSE(SUBSTRING(REVERSE(@courseName),4,20))
答案 2 :(得分:0)
declare @t varchar(30)
set @t='1234-5678-99'
select right(@t, 2)