【问题标题】:How to remove text followed by a special characted in MSQL如何在 SQL 中删除后跟特殊字符的文本
【发布时间】:2014-06-30 20:38:25
【问题描述】:

我有一个名为“国家”的表,其中有一列名为“名称” 并且此列中的名称带有翻译,后跟特殊字符“/”。

IRELAND/IRLANDE
GREECE/GRÈCE
DENMARK/DANEMARK

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

IRELAND
GREECE
DENMARK

请帮忙。提前致谢

【问题讨论】:

  • 我试过这个..SELECT DISTINCT SUBSTRING(LTRIM(RTRIM(names)),1,LEN(names)-CHARINDEX('/',names)) FROM [country] 但是这适用于某些单元格不适用于所有单元格,我的意思是我仍然得到 1or2 文本后跟这个特殊字符。

标签: sql substring special-characters trim charindex


【解决方案1】:

为什么是 LEN(names)-CHARINDEX('/',names)?
尝试改用 CHARINDEX('/',names)+1。

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

【讨论】:

    【解决方案2】:
     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
    

    【讨论】:

      【解决方案3】:

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

      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))),'/', ' ')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-21
        • 2020-04-26
        • 2019-12-22
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多