Ошибка: строка или двоичные данные будут усечены - PullRequest
0 голосов
/ 22 сентября 2011

Я написал запрос, как показано ниже.Допустим, у меня есть данные в таблице @Test, так как «Нью-Йорк и Техас имеют федеральное одобрение CCRxSM».Слово CCRxSM является надстрочным словом, но оно не загружено как верхний индекс.SM должен быть сверху, как CCRx℠.

Declare @Test Table (Foo1 varchar(1023))
Insert @Test(Foo1) Values ('New York and Texas have CCRxSM federraly approved');
Select Foo1, 
 Case When Right(Foo1, 21) = 'SM'
  Then Left(Foo1, Len(Foo1) - 2) + NChar(8480) 
  Else Foo1 End
From @Test

, когда я запускаю свой запрос, я получаю сообщение об ошибке. Строка или двоичные данные будут обрезаны.Я использую SQL SERVER 2005.

ПРОСТО ХОЧУ ДОБАВИТЬ, ЕСЛИ Я ТОЛЬКО ИСПОЛЬЗУЮ СЛОВО CCRxSM, ПОТОМ ЭТО РАБОТАЕТпоэтому не знаю, почему он не работает для полной записи.

Спасибо

Ответы [ 3 ]

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

Столбец Foo1 в таблице @Test может содержать не более 10 символов, поэтому при запуске оператора вставки будет вставлен только «New York a».Остальное будет усечено.

Вы можете изменить его на

DECLARE @Test TABLE (Foo1 varchar(100))...
1 голос
/ 22 сентября 2011

Попробуйте это:

Declare @Test Table (Foo1 nvarchar(1023))
Insert @Test(Foo1) Values ('New York and Texas have CCRxSM federraly approved');
Select Foo1, REPLACE(foo1,'xSM','x'+nchar(8480)) as updatedFoo1
From @Test

Ваш запрос

  Declare @Test Table (Foo1 varchar(1023))
    Insert @Test(Foo1) Values ('New York and Texas have CCRxSM federraly approved');
    Select Foo1, 
     Case When Right(Foo1, 21) = 'SM'
      Then Left(Foo1, Len(Foo1) - 2) + NChar(8480) 
      Else Foo1 End
    From @Test

Исходя из кода, право (foo1,21) SM одобрено федеральным правительством не просто SM Кроме того, имейте в виду, если вы запускаете это в анализаторе запросов, убедитесь, что Результаты запроса отображаются шрифтом Unicode, поэтому вы можете увидеть верхний индекс SM.

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

Вы определили максимальную длину столбца Foo1, затем попытались вставить в него 51 символ. Поэтому очевидно, что это будет усекать.

И CCRxSM не выглядит для меня надстрочным. Это просто письма. Верхний индекс и тому подобные вещи форматируют.

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