(我的)SQL如何截断/拆分要在别处使用的值

时间:2014-06-24 19:32:37

标签: sql parsing split

我不是100%确定我将使用哪些关键词进行搜索,所以如果有链接请发帖。

我对SQL不是很熟悉,所以我不确定工具箱中的'工具'是什么。

但基本上我想查询一个表(表A)...从每行的列中获取一个值 (示例值:2015013或2015164或甚至2015009)

截断/拆分该值,删除2015年前文本...并在结尾处获取值。

1。)我不确定我应该考虑哪些工具? 2.)我不确定如何处理(可能的)前导零或2?

这是我的(弱的)尝试..而不是SQL解析..

(希望我走在正确的道路上?)

SELECT q1.number 
  FROM TableA q1 
  LEFT JOIN TableB s1 
    ON s1.id=q1.number
 WHERE survey = '2015New';

所以要回顾一下..我想查询表A(q1)..通过修剪前面的2015以及任何填充/前导零来解析该值..然后使用它来查询/获取值TableB(s1)由新解析的'id'。

希望这是有道理的。

感谢。

更新

我也尝试过这些没有太多运气..第二次执行但似乎只返回一列..然后底部出现错误:

SELECT q1.number, s1.id, s1.keyword_1, s1.keyword_2
FROM TableA q1
    LEFT JOIN TableB s1 ON s1.id=CAST(TRIM(LEADING '0' FROM SUBSTR(q1.survey, 5)) AS UNSIGNED)
WHERE survey = '2015New';



SELECT q1.number, s1.id, s1.keyword_1, s1.keyword_2
FROM TableA  q1
    LEFT JOIN TableB s1 ON s1.id=TRIM(LEADING '0' FROM CAST(SUBSTR(q1.survey, 5) AS UNSIGNED));
WHERE survey = '2015New';

1 个答案:

答案 0 :(得分:0)

  • 假设调查字段是您要修剪的字段
  • 假设你想要总是跳过4个第一个字符

    SELECT fields
    FROM TableA q1 
        LEFT JOIN TableB s1 ON s1.id=CAST(SUBSTR(q1.survey, 5) AS UNSIGNED)
    WHERE survey = '2015New';
    

但这太糟糕了,你应该考虑重新设计你的模型......这个数字应该作为一个列存储,自己编制索引,并用于与其他表连接。