使用substr连接两个表



我有两个表:

片剂

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;

这会产生你所期望的结果吗?如果没有,那么这就是为什么带有联接的查询也不起作用的原因。

如果它确实产生了你所期望的结果,那么问题就不明显了。

相关内容

  • 没有找到相关文章

最新更新