我有一個結果集,我想修剪一個2位數的後綴。這些字符串的長度總是不一樣的,但後綴總是由兩個數字分隔' - '。在T-SQL中修改不同長度的字符串中的字母數字字符
例子:
APPTR-W302-01
NRSB-8920-09
現在我使用的是以下內容。這是一個黑客,因爲'20'參數是任意的。
REVERSE(SUBSTRING(REVERSE(COURSENAME),4,20))
有沒有更好的方法?
我有一個結果集,我想修剪一個2位數的後綴。這些字符串的長度總是不一樣的,但後綴總是由兩個數字分隔' - '。在T-SQL中修改不同長度的字符串中的字母數字字符
例子:
APPTR-W302-01
NRSB-8920-09
現在我使用的是以下內容。這是一個黑客,因爲'20'參數是任意的。
REVERSE(SUBSTRING(REVERSE(COURSENAME),4,20))
有沒有更好的方法?
後綴是否總是' - ##'?如果後綴長度不改變,
Left(COURSENAME,LEN(COURSENAME)-3)
declare @t varchar(30)
set @t='1234-5678-99'
select right(@t, 2)
下面的代碼顯示三種方法是在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應該是3假設他不想破折號。 – Otis 2009-07-24 18:20:47
對,後綴長度不會改變,是奧蒂斯,我不需要' - '。 – mmcglynn 2009-07-24 20:55:22