Преобразование типа данных Text к VARCHAR/NVARCHAR
Помогите, пожалуйста, исправить ошибку.
В БД поле f_label приведено к типу Text.
Делаю запрос:
При запросе к БД выдается ошибка:
Как преобразовать Text к другому типу, чтобы корректно работал запрос?
Например, такой вариант не помогает:
В БД поле f_label приведено к типу Text.
Делаю запрос:
a_label = "004";
ТекстЗапроса = "SEL ECT * FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND f_label='"+a_label+"'";
При запросе к БД выдается ошибка:
Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
Как преобразовать Text к другому типу, чтобы корректно работал запрос?
Например, такой вариант не помогает:
ТекстЗапроса = "SEL ECT id, f_parent, CONVERT(varchar(max), f_label) FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND f_label='"+a_label+"'";
По теме из базы знаний
Найденные решения
(10) сейчас попробовал. Вот так должно работать:
или так:
ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING(f_label, 1, 8000) as label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND SUBSTRING(f_label, 1, 8000)='"+a_label+"'";
или так:
ТекстЗапроса = "SEL ECT id, f_parent, f_label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND SUBSTRING(f_label, 1, 8000)='"+a_label+"'";
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) в sql нельзя преобразовать типы. Можно только взять подстроку. Как раз подстрока вырезает нужную длину из того же типа TEXT и получает VARCHAR определенной длины.
Это как в 1С строка неограниченной длины. Ее можно обработать в запросе только использую ПОДСТРОКА.
Это как в 1С строка неограниченной длины. Ее можно обработать в запросе только использую ПОДСТРОКА.
ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING (f_label, 1, varchar(max)) FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND f_label='"+a_label+"'";
(10) сейчас попробовал. Вот так должно работать:
или так:
ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING(f_label, 1, 8000) as label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND SUBSTRING(f_label, 1, 8000)='"+a_label+"'";
или так:
ТекстЗапроса = "SEL ECT id, f_parent, f_label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND SUBSTRING(f_label, 1, 8000)='"+a_label+"'";
(13)
Для запроса:
Ошибка:
В коллекции не удается найти элемент, соответствующий требуемому имени или порядковому номеру.
Для запроса:
ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING(f_label, 1, 8000) as label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND SUBSTRING(f_label, 1, 8000)='"+a_label+"'";
Ошибка:
В коллекции не удается найти элемент, соответствующий требуемому имени или порядковому номеру.
Такой вариант тоже не рабочий:
И такой:
ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING(f_label, 1, Datalength(f_label)) FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND f_label='"+a_label+"'";
И такой:
ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING(f_label, 1, LEN(f_label)) FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND f_label='"+a_label+"'";
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот