【问题标题】:substringing on a character in db2对 db2 中的字符进行子字符串化
【发布时间】:2012-04-03 09:51:13
【问题描述】:

我有两列 X 和 Y,其中的值可能如下:

  X        Y
--------------  
 rob     one.1 
 rob     two.2
 rob     abc.3
 rob     pqr.4
 harry   lmn.3
 harry   lkja.4
 harry   lkjs.6

我正在查询 X 列。即

select Y where X='rob'
select Y where X='harry'

我想在上面的列上编写一个查询,输出将是“rob # 1,2,3,4”和“harry #3,4,6”之类的字符串

所以结果字符串的第一部分将是 X 值,后跟一个常量 #,然后是 Y 中的数字,在 '.' 之后。点。

所以 rob 得到 1,2,3,4 而 harry 得到 3,4,6

感谢阅读

【问题讨论】:

    标签: sql db2 substring


    【解决方案1】:

    我使用 db2 中的聚合函数实现了它:

    concat('Harry # ',substr( xmlserialize( xmlagg( xmltext( concat( ', ', substr(myTable.salary, locate('.',myTable.salary)+1) ) ) ) as varchar( 1024 ) ), 3 ))
    

    【讨论】:

      【解决方案2】:

      这是一个连接的例子:

      这是解决问题的方法..

      SQL CONCAT() 函数用于连接两个或多个字符串。 MySQL 允许您连接两个以上的字符串,而其他的则恰好是两个。语法如下:

      CONCAT(expression)
      

      这是在 MySQL 中连接员工姓名和工资的查询:

      SELECT CONCAT(name,':',salary) as name_salary
          FROM employees
      

      这是输出:

      name_salary    
      ----------------
      jack:3000.00   
      mary:2500.00   
      newcomer:2000.00
      anna:2800.00   
      Tom:2700.00    
      foo:4700.00    
      

      【讨论】:

      • 您要做的是连接子查询(从 TABLE 中选择 Right(CHARINDEX(Y,'.')))
      • 您给出的解决方案是一个简单的串联......但是,要求要复杂得多......其中薪水部分来自三个不同的行,输出应该是名称:sal1, sal2,sal3 --- 采用那种格式...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2016-07-29
      • 2018-10-19
      • 1970-01-01
      相关资源
      最近更新 更多