Как сохранить размер поля для динамически заполненного столбца в T-SQL - PullRequest
0 голосов
/ 08 ноября 2019

Я использую следующий запрос:

SELECT prop.PropertyId,
   prop.PropertyName,
   ISNULL(finCen.FacilityUse, prop.FacilityUse) AS FacilityUse,
   prop.City,
   prop.State,
FROM Import.Property prop
LEFT JOIN Import.Ims ims
    ON prop.MailCode = ims.PropertyId
LEFT JOIN
(
    SELECT finCen.Mailcode,
           'Operations Center' AS FacilityUse,
           'OperationsCenter ' AS [Table]
    FROM Import.OperationsCenter finCen
) finCen
    ON finCen.MailId= ims.MaildId

и столкнулся с проблемой в столбце FacilityUse. Он вернет только первые 17 символов:

ISNULL(finCen.FacilityUse, prop.FacilityUse) AS FacilityUse,

, что соответствует количеству символов в:

'Operations Center' AS FacilityUse,

Если развернуть «Центр операций» в «Центр операций **»************* '(звезды на самом деле являются пробелами, но они не позволяют мне публиковать подобные сообщения), с количеством пробелов, учитывающим полное поле FacilityUse, которое работает. Не уверен, как определить длину для этого возвращаемого значения

1 Ответ

4 голосов
/ 08 ноября 2019

finCen.FacilityUse определяется длиной 17 символов, потому что это длина жестко закодированного строкового значения во внутреннем запросе. Попробуйте привести столбец к типу данных большей длины:

SELECT prop.PropertyId,
   prop.PropertyName,
   ISNULL(finCen.FacilityUse, prop.FacilityUse) AS FacilityUse,
   prop.City,
   prop.State,
FROM Import.Property prop
LEFT JOIN Import.Ims ims
    ON prop.MailCode = ims.PropertyId
LEFT JOIN
(
    SELECT finCen.Mailcode,
           CAST('Operations Center' AS VARCHAR(100)) AS FacilityUse,
           CAST('OperationsCenter' AS VARCHAR(100)) AS [Table]
    FROM Import.OperationsCenter finCen
) finCen
    ON finCen.MailId= ims.MaildId;

. Вы должны привести его к тому же типу данных, что и Import.Property.FacilityUse

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