如何在SQL中删除文本后跟一个特殊字符

时间:2014-05-13 08:54:06

标签: sql substring special-characters trim charindex

我有一个名为'country'的表,其中一列名为'name' 并且此列中的名称显示为带有翻译后跟特殊字符'/'。

IRELAND/IRLANDE
GREECE/GRÈCE
DENMARK/DANEMARK

现在我只想要这个特殊字符'/'之前的国家名称,所以输出应该是这样的..

IRELAND
GREECE
DENMARK

请帮忙。提前致谢

3 个答案:

答案 0 :(得分:0)

为什么LEN(姓名)-CHARINDEX(' /',姓名)?
尝试使用CHARINDEX(' /',名称)+1代替。

据我记忆,SUBSTRING的第三个变量应该是所需输出字符串的长度。

答案 1 :(得分:0)

 create table #t(name nvarchar(40))
insert into #t values('IRELAND/IRLANDE')
,('GREECE/GRÈCE')
,('DENMARK/DANEMARK')


select substring(name,0,CHARINDEX('/',name)) from #t

答案 2 :(得分:0)

一个更复杂的查询来帮助您:

DECLARE @Text     VARCHAR(50) = 'IRELAND/IRLANDE GREECE/GRÈCE DENMARK/DANEMARK'
    SELECT
 SUBSTRING(SUBSTRING(@Text,0,CHARINDEX(' ',@Text,0)),0,CHARINDEX('/',@Text,0))
 +  
 SUBSTRING(SUBSTRING(@Text,CHARINDEX(' ',@Text,0),CHARINDEX(' ',@Text,0)),0,CHARINDEX('/',@Text,0))
 + ' '
 +
 REPLACE(REVERSE(SUBSTRING(REVERSE(@Text),CHARINDEX('/',@Text,0) + 1 ,CHARINDEX('/',@Text,0))),'/', ' ')