Данные Oracle возвращаются с пробелами между символами - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь извлечь данные (выберите * ..) из базы данных SQL Server в базу данных Oracle, используя dblinks.В моей базе данных SQL Server у меня есть столбцы AddressLine1 и AddressLine2 типа nvarchar.

Я запускаю приведенный ниже скрипт в SQL Developer (v 4.1.3.20).Результаты появляются с пробелами между символами.Я использовал Benthic и SQL Plus, и результаты совпадают, пробелы между символами.

SELECT 
    c.CandidateID,
    pa."AddressLine1", pa."AddressLine2"
FROM 
    CANDIDATES c --Oracle table
INNER JOIN 
    PostalAddress@HIM pa ON pa."EntityID" = c.CandidateID   -- SQL Server table

- @ HIM - имя_блокировки`

На этом снимке экрана показаны результаты (при копировании пробелов(* скопированы):

Results

Я также пытался привести результаты к varchar, и результаты такие же.Я пытался обрезать пробелы, а также пытался заменить пробелы на NULL, но результаты остались прежними.

Любые предложения будут с благодарностью.Спасибо.

1 Ответ

0 голосов
/ 12 июня 2018

Ваша проблема действительно имеет отношение к кодировке.В частности, кажется, что ваш текст декодируется с использованием набора символов, ширина которого составляет два байта, а данные ASCII занимают только один байт.

В качестве временного исправления рассмотрите следующий запрос:

SELECT REGEXP_REPLACE('6 2 1 1  W r i g h t s v i l l e  A v e', ' ([^ ])', '\1')
FROM dual;

Демо

Это выводит 6211 Wrightsville Ave, что вам и нужно.Обратите внимание, что я предполагаю, что у каждого символа есть дополнительное пространство-призрак, в результате чего слова, которые были первоначально разделены одним пробелом, теперь будут разделены двумя пробелами.

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

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