【问题标题】:Join two Substring_index加入两个 Substring_index
【发布时间】:2016-06-16 03:54:37
【问题描述】:

我需要加入下面选择子字符串的 2 个结果。有什么想法吗?

BEGIN
select SUBSTRING_INDEX(SUBSTRING_INDEX(oldVal, '-', n.n), '-', -1) AS oldVal5
FROM audits oldVal
CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n 
FROM (SELECT 0 AS N 
      UNION ALL SELECT 1 
      UNION ALL SELECT 2 
      UNION ALL SELECT 3 
      UNION ALL SELECT 4      
      UNION ALL SELECT 5 
      UNION ALL SELECT 6 
      UNION ALL SELECT 7 
      UNION ALL SELECT 8 
      UNION ALL SELECT 9) a ,
   (SELECT 0 AS N 
      UNION ALL SELECT 1 
      UNION ALL SELECT 2 
      UNION ALL SELECT 3 
      UNION ALL SELECT 4 
      UNION ALL SELECT 5 
      UNION ALL SELECT 6 
      UNION ALL SELECT 7 
      UNION ALL SELECT 8 
      UNION ALL SELECT 9) b ORDER BY n ) n 
WHERE n.n <= 1 + (LENGTH(oldVal) - LENGTH(REPLACE(oldVal, '-', ''))) and 
dbUser=34 and tableName='persona' and task='u';

select SUBSTRING_INDEX(SUBSTRING_INDEX(newVal, '-', n.n), '-', -1) AS newval5 
FROM audits newVal
CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n 
FROM (SELECT 0 AS N 
UNION ALL SELECT 1 
UNION ALL SELECT 2 
UNION ALL SELECT 3 
UNION ALL SELECT 4 
UNION ALL SELECT 5 
UNION ALL SELECT 6 
UNION ALL SELECT 7 
UNION ALL SELECT 8 
UNION ALL SELECT 9) a ,
(SELECT 0 AS N 
UNION ALL SELECT 1 
UNION ALL SELECT 2 
UNION ALL SELECT 3 
UNION ALL SELECT 4 
UNION ALL SELECT 5 
UNION ALL SELECT 6 
UNION ALL SELECT 7 
UNION ALL SELECT 8 
UNION ALL SELECT 9) b ORDER BY n ) n 
WHERE n.n <= 1 + (LENGTH(newVal) - LENGTH(REPLACE(newVal, '-', ''))) and 
dbUser=34 and tableName='persona' and task='u';

END

【问题讨论】:

    标签: mysql select join substring


    【解决方案1】:

    只需在同一个查询中同时选择两者。

    select SUBSTRING_INDEX(SUBSTRING_INDEX(oldVal, '-', n.n), '-', -1) AS oldVal5,
           SUBSTRING_INDEX(SUBSTRING_INDEX(newVal, '-', n.n), '-', -1) AS newVal5
    FROM audits oldVal
    CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n 
    FROM (SELECT 0 AS N 
          UNION ALL SELECT 1 
          UNION ALL SELECT 2 
          UNION ALL SELECT 3 
          UNION ALL SELECT 4      
          UNION ALL SELECT 5 
          UNION ALL SELECT 6 
          UNION ALL SELECT 7 
          UNION ALL SELECT 8 
          UNION ALL SELECT 9) a ,
       (SELECT 0 AS N 
          UNION ALL SELECT 1 
          UNION ALL SELECT 2 
          UNION ALL SELECT 3 
          UNION ALL SELECT 4 
          UNION ALL SELECT 5 
          UNION ALL SELECT 6 
          UNION ALL SELECT 7 
          UNION ALL SELECT 8 
          UNION ALL SELECT 9) b ORDER BY n ) n 
    WHERE (n.n <= 1 + (LENGTH(oldVal) - LENGTH(REPLACE(oldVal, '-', ''))) 
            or
           n.n <= 1 + (LENGTH(newVal) - LENGTH(REPLACE(newVal, '-', ''))))
        and dbUser=34 and tableName='persona' and task='u';
    

    【讨论】:

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