Соедините две таблицы, используя substr - PullRequest
0 голосов
/ 02 марта 2012

У меня есть две таблицы:

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" не отвечает.

Может кто-нибудь мне помочь?

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Настройка

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

Использование Locate

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 (поиск workd) не может быть именем столбца, и поэтому он не работал, когда вы его пробовали.

CCSID - это кодировка символов, а не тип данных столбца, поэтому, если толькоСоздание таблицы не похоже на то, что у меня есть, я не вижу, в чем проблема.Не могли бы вы обновить нас запросом, который вы используете для создания таблиц?

0 голосов
/ 02 марта 2012

Вы проверили, что вы получаете:

SELECT JRNO, JSNO, TEXT, SUBSTR(TEXT, 11, 7) AS INV
  FROM TableA;

Производит ли это то, что вы ожидаете?Если нет, то вот почему запрос с объединением тоже не сработал.

Если он дает то, что вы ожидаете, то не сразу понятно, что не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...