我不是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';
答案 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';
但这太糟糕了,你应该考虑重新设计你的模型......这个数字应该作为一个列存储,自己编制索引,并用于与其他表连接。