在T-SQL中修剪不同长度的字符串中的字母数字字符

时间:2009-07-24 17:52:38

标签: sql sql-server string

我有一个结果集,我想修剪一个2位数的后缀。字符串将始终具有不同的长度,但后缀将始终是由“ - ”分隔的两位数。

示例:

APPTR-W302-01
NRSB-8920-09

现在我正在使用以下内容。这是一个黑客,因为'20'参数是任意的。

REVERSE(SUBSTRING(REVERSE(COURSENAME),4,20))

有更好的方法吗?

3 个答案:

答案 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)