【问题标题】:Substring sql query子字符串sql查询
【发布时间】:2014-07-07 07:37:04
【问题描述】:

以下查询将返回

PR-2014-00006-02

查询:

select PRItemNo 
from tPRItem
order by PRItemNo ASC

我想要子字符串比如我会返回如下结果

col1   col2   col3    col4 
PR     2014   00006   02

【问题讨论】:

  • 我尝试了以下 select substring(PRItemNo,charindex('-',PRItemNo)+1,len(PRItemNo)-charindex('-',PRItemNo)),PRItemNo from tPRItem
  • 你有什么作为条目/数据是一列以PR-2014-00006-02 作为数据还是什么?
  • 我有数据 PR-2014-00006-02 我希望它们成为子字符串,以便所有值都在单独的列中

标签: sql sql-server substring


【解决方案1】:

使用PARSENAME

   --Using PARSENAME 
   SELECT PARSENAME(REPLACE(PRItemNo ,'-','.'),4) col1, 
          PARSENAME(REPLACE(PRItemNo ,'-','.'),3) col2, 
          PARSENAME(REPLACE(PRItemNo ,'-','.'),2) col3, 
          PARSENAME(REPLACE(PRItemNo ,'-','.'),1) col4
   FROM Table1

Fiddle Demo


输出

COL1    COL2    COL3    COL4
PR      2014    00006   02

【讨论】:

    【解决方案2】:
    declare @t VARCHAR(30)= 'PR-2014-00006-02'
    SELECT SUBSTRING(@t,CHARINDEX(@t,'-'),3),
    SUBSTRING(substring(@t, charindex('-',@t) + 1,len(@t) - charindex('-',@t)),0,CHARINDEX('-',@t)+2),
    RIGHT(substring(@t, charindex('-',@t) + 1,len(@t) - charindex('-',REVERSE(@t))-CHARINDEX('-',@t)),5),
     REVERSE(LEFT(reverse(@t), charindex('-', reverse(@t)) - 1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-05
      • 2021-04-14
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2021-07-24
      相关资源
      最近更新 更多