【问题标题】:Separation of SQL ExpressionSQL 表达式的分离
【发布时间】:2010-12-12 13:25:33
【问题描述】:

我有一个意见:

(123)555-234-556,(321)333-324-223

我需要将前半部分(直到逗号)分开并分配给变量 A,后半部分分配给变量 B。 我还需要能够将这些部分形成为:

123-555-234-556

【问题讨论】:

  • 确认一下,整个字符串是否存储在一列中?这将有助于了解您正在使用什么数据库管理系统。 MySQL? SQL 服务器?甲骨文?

标签: sql text-parsing


【解决方案1】:

PostgreSQL 解决方案:

选择子串(t,2,3)||'-'||子串(t,6) FROM unnest(string_to_array('(123)555-234-556,(321)333-324-223',',')) as t

【讨论】:

    【解决方案2】:

    替代 PostgreSQL 解决方案,假设您希望将值放在两个单独的列中:

    首先将它们放在两列中(我怀疑您的意思是列)。

    select 
    substring(input,0,position(',' in input)) as A, 
    substring(input,position(',' in input)+1) as B
    from (select '(123)555-234-556,(321)333-324-223'::varchar as input) fakeInput
    

    然后是第二部分

    substring(A,2,3) || '-' || substring(A,6) as modifiedA
    

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2011-03-27
      • 2020-11-14
      • 1970-01-01
      相关资源
      最近更新 更多