我有一个名为'country'的表,其中一列名为'name' 并且此列中的名称显示为带有翻译后跟特殊字符'/'。
IRELAND/IRLANDE
GREECE/GRÈCE
DENMARK/DANEMARK
现在我只想要这个特殊字符'/'之前的国家名称,所以输出应该是这样的..
IRELAND
GREECE
DENMARK
请帮忙。提前致谢
答案 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))),'/', ' ')