【问题标题】:How to select data after specific character如何在特定字符后选择数据
【发布时间】:2019-07-02 16:05:26
【问题描述】:

我想跳过第一个破折号从第二个破折号中选择数据。

我使用了下面的函数,从中我得到了唯一的 FLR

replace(right([Bin Code], charindex('-', reverse([Bin Code]))),'-','')

单元格包含这个值

0771-B-3RD-FLR

期望的输出

3RD-FLR

【问题讨论】:

    标签: sql sql-server sql-server-2005 sql-server-2012


    【解决方案1】:

    一种方法是一次只吃一个连字符:

    select t.*, v2.bin_code
    from t cross apply
         (values (stuff(t.bin_code, 1, charindex('-', t.bin_code), '')
         ) v(bin_code)(bin_code) cross apply
         (values (stuff(v1.bin_code, 1, charindex('-', v1.bin_code), '')
         ) v2(bin_code)(bin_code) ;
    

    【讨论】:

    • 那个戈登有不少语法错误。您缺少一些右括号,您已经两次声明了列名,并且您的别名不一致。
    【解决方案2】:

    如果它总是从您想要的第二个连字符开始(您的描述有点矛盾),您可以使用STUFF 和几个嵌套的CHARINDEX 函数:

    SELECT STUFF(V.S,1,CHARINDEX('-',V.S,CHARINDEX('-',V.S)+1),'') AS NS
    FROM (VALUES('0771-B-3RD-FLR'))V(S);
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 2017-07-28
      • 1970-01-01
      • 2015-06-22
      相关资源
      最近更新 更多