我有一个名为“国家”的表,其中有一列名为“名称”,该列中的名称显示为翻译后跟特殊字符“/”。
IRELAND/IRLANDE
GREECE/GRÈCE
DENMARK/DANEMARK
现在我只想要这个特殊字符'/'之前的国名,所以输出应该是这样的..
IRELAND
GREECE
DENMARK
请帮忙。提前致谢
我有一个名为“国家”的表,其中有一列名为“名称”,该列中的名称显示为翻译后跟特殊字符“/”。
IRELAND/IRLANDE
GREECE/GRÈCE
DENMARK/DANEMARK
现在我只想要这个特殊字符'/'之前的国名,所以输出应该是这样的..
IRELAND
GREECE
DENMARK
请帮忙。提前致谢
为什么是 LEN(names)-CHARINDEX('/',names)?
尝试改用 CHARINDEX('/',names)+1 。
据我记得,SUBSTRING 的第三个变量应该是所需输出字符串的长度。
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
一个更复杂的查询来帮助你:
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))),'/', ' ')