SQL Регистрация не рабочие данные присутствуют в обоих столбцах - PullRequest
0 голосов
/ 24 марта 2020

Я использую запрос ниже. PID, который я ищу, присутствует в обеих таблицах. Но когда я использую Join, результат из таблицы 2. Я не уверен, почему это происходит. PID - это varchar, а PIDD - это nvarchar. Я также пытался конвертировать в объединении, и не повезло.

SELECT  
    a.PID,c.PIDD
FROM 
    Table1 a
LEFT JOIN
    Table2 c ON LTRIM(RTRIM(a.PID)) = LTRIM(RTRIM(c.PIDD)))
WHERE
    a.[ID] IN ('8200000')

Вывод запроса:

PID      PIDD
--------------
123      NULL
234      NULL  

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Код ниже работает. Устранена ошибка с помощью len ()

LTRIM (RTRIM (ЗАМЕНИТЕ (ЗАМЕНИТЕ (ЗАМЕНИТЕ (ЗАМЕНИТЕ (PIDD, CHAR (10), CHAR) (32)), CHAR (13), CHAR (32)), CHAR ( 160), CHAR (32)), CHAR (9), CHAR (32))))

0 голосов
/ 24 марта 2020
 PID that I looking for is present in both the tables.

Что-то в них должно быть другим, даже когда вы убираете пробелы.

PID is varchar and PIDD is nvarchar

Любой шанс, что PIDD имеет некоторые символы, которые похожи друг на друга, но на самом деле это не тот же набор символов, например, '& `?

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

В отдельном примечании ваша производительность будет ужасной, если вам придётся соединять ваши значения с помощью ltrim / rtrim. ltrim(rTRIM(a.PID)) = ltrim(rtrim(c.PIDD)))

Требуется сканирование таблицы / индекса независимо от того, какие индексы в таблице.

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