2009-07-24 24 views
1

我有一個結果集,我想修剪一個2位數的後綴。這些字符串的長度總是不一樣的,但後綴總是由兩個數字分隔' - '。在T-SQL中修改不同長度的字符串中的字母數字字符

例子:

APPTR-W302-01
NRSB-8920-09

現在我使用的是以下內容。這是一個黑客,因爲'20'參數是任意的。

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

有沒有更好的方法?

回答

10

後綴是否總是' - ##'?如果後綴長度不改變,

Left(COURSENAME,LEN(COURSENAME)-3) 
+2

2應該是3假設他不想破折號。 – Otis 2009-07-24 18:20:47

+0

對,後綴長度不會改變,是奧蒂斯,我不需要' - '。 – mmcglynn 2009-07-24 20:55:22

0
declare @t varchar(30) 
set @t='1234-5678-99' 
select right(@t, 2) 
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)) 
相關問題