Используйте TRIM в JOIN - PullRequest
       4

Используйте TRIM в JOIN

0 голосов
/ 22 апреля 2020

У меня есть следующий SQL код

SELECT      State.CODE                    Code, 
            State.CODE1                   Code1, 
            State.CODE2                   Code2, 
            YYY.1003."BRANCH"            "Branch" 
     FROM   XXX.1002 State
            LEFT JOIN YYY.1003 
                   ON State.CODE= YYY.1003.CODE

Теперь мне нужен новый столбец, который показывает мне поле / столбец "Страна" из таблицы ZZZ.100. Ключ 1002.CODE1 - ZZZ.100.CODE1

К сожалению, ZZZ.100.CODE1 имеет пробелы перед значениями (4 пробела).

Как использовать функцию обрезки (есть это правильно), чтобы получить соединение на 1002.CODE1 - ZZZ.100.CODE1

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Во-первых, почему столбец Key содержит пробелы? Ключевой столбец никогда не должен содержать пробелов, это ужасно для производительности. Здесь нужно подумать об удалении этих пробелов из этого столбца

Использование TRIM, учитывая, что вы используете SQL Сервер В SQL Сервер вы можете использовать LTRIM (для обрезки слева удалите пробелы слева) ) и / или RTRIM (для правой обрезки, удалите правые пробелы)

Пример: выберите LTRIM (RTRIM (Table.Column)) из таблицы

Надеюсь, это может помочь вам

1 голос
/ 22 апреля 2020

Похоже, что вы хотите:

select x.code, x.code1, x.code2, y.branch, z.country
from xxx.1002 x
left join yyy.1003 y on x.code= y.code
left join zzz.100  z on trim(z.code1) = x.code1

trim() удаляет пробелы на обоих концах строки. Если вы хотите удалить только начальные пробелы, вы можете сделать: trim(leading ' ' from z.code1).

Обратите внимание, что я использовал более значимые псевдонимы таблиц, чтобы сделать запрос более простым для написания и чтения.

Я бы также рекомендовал не использовать имена таблиц из всех цифр: в Oracle идентификаторы без кавычек должны начинаться с буквы c.

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