我有两个表:
片剂
JRNO JSNO TEXT
1955 7 S0042 1000122000
片剂
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"
似乎没有响应。
有人能帮我吗?
设置
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是一个字符编码,而不是列数据类型,所以除非表的创建与我的不相似,否则我看不出有什么问题。你能向我们更新你用来创建表的查询吗?
你检查过你从得到的东西吗
SELECT JRNO, JSNO, TEXT, SUBSTR(TEXT, 11, 7) AS INV
FROM TableA;
这会产生你所期望的结果吗?如果没有,那么这就是为什么带有联接的查询也不起作用的原因。
如果它确实产生了你所期望的结果,那么问题就不明显了。