【问题标题】:SQL Column has a value I need to split into two columns [duplicate]SQL Column有一个值我需要分成两列[重复]
【发布时间】:2014-04-19 19:53:21
【问题描述】:

例如

我有:

PN*BR        PN
872*07       872
8445*07      8455

我需要一个新的 BR 列:

PN*BR        PN     BR
872*07       872    07
8445*07      8455   07

【问题讨论】:

  • 我看不出这怎么可能是那个特定问题的副本。他们几乎没有共同点。它可能是其他问题的副本,但不是那个链接的问题
  • 我同意@t-clausen.dk 这个问题是不同的,因为 PN 列 - 它不仅仅是一个字符串拆分。戈登的回答表明了这一点。
  • 尊敬的@jsefton007 我注意到您忘记接受针对您提出的问题提供的任何答案。我认为这是一个错误,并且我确信您会仔细检查您的问题并通过接受奖励您找到的最佳答案

标签: sql sql-server string tsql split


【解决方案1】:

这是一种方法:

select t.*,
       replace(replace([PN*BR], PN, ''), '*', '') as BR
from table t

重复值是个问题。现在这个问题被标记了一个数据库,我建议:

select t.*,
       replace([PN*BR], PN + '*', '') as BR
from table t

【讨论】:

  • PN列呢?
  • +1 我同意这个推理
  • 希望 [PN*BR] 不会包含像 '07*07' 这样的值
  • 嗯,问题好像变了
  • @GordonLinoff - 实际上可以。当您创建问题或评论时,您有几分钟的“宽限期”进行更改——这些更改不会显示在历史记录中,并且(更重要的是为了我的面子)它们不会生成“更新”消息到该页面,因此如果您看到原始版本,您不会在没有硬刷新的情况下看到更新。 SO 拥有最好的 UI 之一,但这是一项可能会引起轻微混淆的功能。当您在提交后立即看到该错字时,当然很好。
【解决方案2】:
SELECT LEFT([PN*BR],PATINDEX('%*%',[PN*BR])-1) AS PN,
       RIGHT([PN*BR],LEN([PN*BR]) - PATINDEX('%*%',[PN*BR])) AS BR
FROM   Table

【讨论】:

    【解决方案3】:

    在这里回答:How to split a single column values to multiple column values?

    摘录:

    SELECT CASE
             WHEN name LIKE '% %' THEN LEFT(name, Charindex(' ', name) - 1)
             ELSE name
           END,
           CASE
             WHEN name LIKE '% %' THEN RIGHT(name, Charindex(' ', Reverse(name)) - 1)
           END
    FROM   YourTable
    

    【讨论】:

    • 问题中没有名称列,问题不想在空格上拆分。
    • 只是试图说明该问题在引用的问题上有答案并从那里提取查询。
    【解决方案4】:
    SELECT t.*,
           STUFF([PN*BR], 1, CHARINDEX('*', [PN*BR]), '') BR
    FROM <yourtable> t
    

    【讨论】:

      【解决方案5】:
      SELECT SUBSTRING(PN*BR,1,CHARINDEX('*',PN*BR,1)-1) as PN, SUBSTRING(PN*BR,CHARINDEX('*',PN*BR,1)+1,LEN(PN*BR)-CHARINDEX('*',PN*BR,1)) as BR 
      FROM Table
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-23
        • 1970-01-01
        • 2013-04-15
        • 2015-11-30
        • 2022-11-02
        • 2019-03-07
        • 1970-01-01
        • 2017-04-09
        相关资源
        最近更新 更多