我有两张桌子:
TABLEA
JRNO JSNO TEXT
1955 7 S0042 1000122000
TABLEB
CODE INV TYPE
AWSE 1000122 CHE
我需要加入表格才能获得相关信息: -
CODE INV TYPE JRNO JSNO
AWSE 1000122 CHE 1955 7
为此,我使用以下SQL:
SELECT CODE, INV, TYPE, JRNO, JSNO
FROM TABLEB
LEFT OUTER JOIN TABLEA ON SUBSTR(TEXT,11,7) = INV
WHERE INV = ‘1000122’
然而,结果如下:
CODE INV TYPE JRNO JSNO
AWSE 1000122 CHE
似乎"SUBSTR(TEXT,11,7) = INV"
没有响应。
有人可以帮助我吗?
答案 0 :(得分:2)
<强>设置强>
create table tablea (jrno smallint, jsno smallint, text char(32));
create table tableb (code char(8), inv char(8),type char(3));
insert into tablea values (1955,7,'S0042 1000122000');
insert into tableb values ('AWSE', '1000122', 'CHE');
使用子字符串
7: select code, inv, type, jrno, jsno
from tableb
left outer join tablea on substr(text,11,7) = inv
where inv = '1000122'
CODE INV TYPE JRNO JSNO
==== === ==== ==== ====
AWSE 1000122 CHE 1955 7
使用定位
select code, inv, type, jrno, jsno
from tableb
LEFT OUTER JOIN TABLEA ON LOCATE('1000122', TEXT) > 0
CODE INV TYPE JRNO JSNO
==== === ==== ==== ====
AWSE 1000122 CHE 1955 7
locate中的第一个参数(搜索工作)不能是列名,这就是为什么它在你尝试时不起作用。
CCSID是一个不是列数据类型的字符,所以除非表的创建与我的不相似,否则我看不出有什么问题。您能用我们用来创建表格的查询来更新我们吗?
答案 1 :(得分:0)
你有没有检查过你的来源:
SELECT JRNO, JSNO, TEXT, SUBSTR(TEXT, 11, 7) AS INV
FROM TableA;
这会产生你所期望的吗?如果没有,那么这就是为什么带连接的查询也不起作用。
如果它确实产生了你所期望的,那么不会立即明显出现什么问题。