Выберите текстовый столбец из таблицы в хранимой процедуре SQL Server - PullRequest
0 голосов
/ 11 июля 2019

Мне трудно понять это.У меня есть таблица инцидентов, которая содержит столбцы id, comments, incidentdate и incidentdescID.В этой таблице приведены данные за 10 лет.Я написал хранимую процедуру для извлечения данных за последние 4 года, но столкнулся со следующей ошибкой.

Сообщение 8152, уровень 16, состояние 10, строка 27
Строка или двоичные данные будут обрезаны.

Поэтому, когда я изменяю диапазон дат для инцидентабыть между 2015 и 2016 я не получаю ошибку.Затем, когда я изменяю его на 2017-2018, я все еще не получаю ошибку.Но когда я изменяю его на 2016-2017, я получаю ошибку.Также, когда я закомментирую столбец comments, я не получаю сообщение об ошибке, независимо от того, какой диапазон дат я поставил.

Поэтому я подумал, что в столбце Comments может быть специальный символ, который являетсяtext столбец в таблице Incident.Если это так, как бы я мог выбрать этот столбец, но удалить специальные символы в хранимой процедуре без внесения изменений в таблицу?

1 Ответ

0 голосов
/ 11 июля 2019

Если вы подозреваете, что ваш столбец «Комментарии» является виновником, вы можете найти моего друга для поиска нежелательных значений.Я получил эту ошибку один раз и исправил, заменив char (10) и char (13) пробелами.

1.

    SELECT REPLACE(REPLACE(tbl.comments, CHAR(10), '*JUNK*'), CHAR(13), '*JUNK*') AS CleandComments 
    FROM [your table name] tbl
Скопируйте результат запроса в любой редактор и найдите записи, соответствующие JUNK ключевым словам.

В идеале это происходит, когда вы импортируете данные из исключительных или исходных таблиц с NVARCHARтип данных, в то время как ваш пункт назначения является CSV или принимает только VARCHAR.

Если приведенный выше случай, то вам просто нужно добавить функцию REPLACE в ваши столбцы в вашей процедуре

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