删除sql server 2008中文本列末尾的数字

时间:2013-09-02 14:41:58

标签: sql-server sql-server-2008

我在程序表中有一个Name列。它具有以下值

Name

Style U.
Music Videos (60)        108
Amp                      111
MTV2 JAMS                112
RoR                      113
Artist Collection        114

我的要求是删除出现在上述数据末尾的数字部分。 如果没有数字,那么我需要从Select查询中获取该值。

我尝试过以下逻辑..

DECLARE @c AS VARCHAR(25)
SET @c = 'abc3 hkh  360'

SELECT 
    CASE WHEN CHARINDEX(' ', LTRIM(RTRIM(@c)), 0) = 0 
        THEN @c 
        ELSE SUBSTRING(LTRIM(RTRIM(@c)), 1, CHARINDEX(' ', LTRIM(RTRIM(@c)), -1))
    END AS Prg_Name

结果:abc3

但上述逻辑中的问题是,它无法找到2个连续的空间,而是在找到第一个空间时进行修剪。

1 个答案:

答案 0 :(得分:0)

谢谢大家..但问题解决了.. :)

declare @c as varchar(25) 
set @c='abc3 tc 152' 
select 
    case when patindex('% %',ltrim(rtrim(@c)))=0 
        then @C 
        else SUBSTRING(ltrim(rtrim(@c)),1,patindex('% %',ltrim(rtrim(@c)))) 
end as Prg_Name