Использование RTRIM в состоянии JOIN - PullRequest
3 голосов
/ 13 сентября 2011

Я хочу собрать две таблицы, содержащие Продукты вместе, по их ОПИСАНИЮ

TABLE 1: [..fields..] [DESCRIPTION1] [..fields..]

TABLE 2: [..fields..] [DESCRIPTION2] [..fields..]

SELECT [..fields..] FROM TABLE1,TABLE2 
    INNER JOIN TABLE1 
    ON TABLE1.DESCRIPTION1 = TABLE2.DESCRIPTION2

Но во многих случаяхв обеих таблицах есть описания, заканчивающиеся пробелом, я также хочу получить их, поэтому я попробовал это так:

SELECT [..fields..] FROM TABLE1,TABLE2 
    INNER JOIN TABLE1 
    ON TABLE1.DESCRIPTION1 = TABLE2.DESCRIPTION2 
    OR RTRIM(TABLE1.DESCRIPTION1) = RTRIM(TABLE2.DESCRIPTION2)

, который не выдает ошибки, но не приносит больше данных.

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

Любая помощь приветствуется :)

Заранее спасибо, Гарри

Ответы [ 3 ]

4 голосов
/ 13 сентября 2011

Проблема может заключаться в символах CRLF в конце описания, которые будут выглядеть как пробелы в SSMS и не будут удалены RTRIM().

Чтобы проверить, посмотрите, возвращает ли выбор where Description like '%' + char(13) + char(10)что-нибудь.Если кажется, что в конце описания есть только 1 пробел, попробуйте либо char(13), либо char(10) в одиночку.Наконец, табуляция (char(9)) также будет выглядеть как пробел, так что вы можете попробовать это тоже.

Если это окажется один из этих символов, вы можете использовать REPLACE, чтобы получитьизбавимся от них:

REPLACE(REPLACE(REPLACE(MyField, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')

который я нашел здесь .

1 голос
/ 13 сентября 2011

В зависимости от типа данных вам вообще не нужен RTRIM (). Мне также интересно, если ваше сочетание старого стиля и современного синтаксиса соединения сбивает вас с толку (хотя это должно дать больше строк, а не меньше). Что это дает?

SELECT [..columns..]
    FROM dbo.TABLE1 AS t1
    INNER JOIN dbo.TABLE2 AS t2
    ON RTRIM(t1.DESCRIPTION1) = RTRIM(t2.DESCRIPTION2);
1 голос
/ 13 сентября 2011

Вам не нужно ИЛИ

SELECT [..fields..] 
  FROM TABLE1 T1
       INNER JOIN TABLE2 T2
         ON RTRIM(T1.DESCRIPTION1) = RTRIM(T2.DESCRIPTION2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...