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

Sql server 删除sql server 2008中文本列末尾的数字,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我在程序表中有一个名称列。它具有以下值 Name Style U. Music Videos (60) 108 Amp 111 MTV2 JAMS 112 RoR 113 Artist Collection 114 我的要求是删除出现在上述数据末尾的数字部分。 如果没有数字,那么我需要Select查询中的值 我尝试了以下逻辑 DECLARE @c AS

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

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个连续的空间,而是在找到第一个空间时进行修剪。

谢谢大家。。但问题解决了……)


给定样本数据,您的预期结果是什么?我对上述变量@C的预期结果是“abc3 hkh”。那就是去掉末尾的数字部分。它总是一个三位数的数字吗?你有没有考虑过把名字分成两列的一次性工作,你不想一直这样做。不,它不需要总是三位数。。它可以改变。。但是规则说,如果单词找到3个连续的空格,那么就删掉后面的部分谢谢大家。。但问题解决了……)将@c声明为varchar(25)set@c='abc3 tc 152'在patindex('%%',ltrim(rtrim(@c))=0时选择大小写,然后将@c else子字符串(ltrim(rtrim(@c)),1,patindex('%%',ltrim(rtrim(@c))作为Prg_名称结束
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