Помогите, пожалуйста, исправить ошибку.

В БД поле f_label приведено к типу Text.

Делаю запрос:

```1c
    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 к другому типу, чтобы корректно работал запрос?

Например, такой вариант не помогает:

```1c
    ТекстЗапроса = "SEL ECT id, f_parent, CONVERT(varchar(max), f_label) FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND f_label='"+a_label+"'";
```
---
сейчас попробовал. Вот так должно работать:

```1c
    ТекстЗапроса = "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+"'";
```

или так:

```1c
    ТекстЗапроса = "SEL ECT id, f_parent, f_label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND SUBSTRING(f_label, 1, 8000)='"+a_label+"'";
```
---
SUBSTRING ( expression ,start , length )
---
SUBSTRING ( expression ,start , length

Как эта функция выглядит в контексте запроса? Я думаю, что SUBSTRING вырезает кусок определенной длины из строки, а не преобразовывает тип данных. Вы можете написать запрос полностью? Причем тут SUBSTRING?
---
в sql нельзя преобразовать типы. Можно только взять подстроку. Как раз подстрока вырезает нужную длину из того же типа TEXT и получает VARCHAR определенной длины.
Это как в 1С строка неограниченной длины. Ее можно обработать в запросе только использую ПОДСТРОКА.

```1c
    ТекстЗапроса = "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+"'";
```
---
Ваш вариант запроса не работает.
[Microsoft][ODBC SQL Server Driver][SQL Server]'varchar' is not a recognized function name.
---
псевдоним подстроки нужно указать.

```1c
    ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING(f_label, 1, varchar(max)) as label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND label='"+a_label+"'";
```
---
Ошибка та же самая:
[Microsoft][ODBC SQL Server Driver][SQL Server]'varchar' is not a recognized function name.

MS SQL не знает такой функции varchar(). Нужно писать что то другое.
---
а если вместо varchar(max) подставить число 8000?
---
Не помогает (
---
что, такая же ошибка?
ТекстЗапроса = "SEL ECT id, f_parent, SUBSTRING(f_label, 1, 8000) as label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND label='"+a_label+"'";
Точно такой запрос?
---
сейчас попробовал. Вот так должно работать:

```1c
    ТекстЗапроса = "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+"'";
```

или так:

```1c
    ТекстЗапроса = "SEL ECT id, f_parent, f_label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND SUBSTRING(f_label, 1, 8000)='"+a_label+"'";
```
---
Первый вариант не работает.

А вот этот вполне:

```1c
    ТекстЗапроса = "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) и (14) проверены в mssql, Там все отрабатывают.
---
Работает только второй вариант, почему то )
---
это может быть ограничение/проблема провайдера.
---
Для запроса:

```1c
    ТекстЗапроса = "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+"'";
```

Ошибка:
В коллекции не удается найти элемент, соответствующий требуемому имени или порядковому номеру.
---
это уже ошибка обработки далее. Тут же меняется имя выходящего поля: SUBSTRING(f_label, 1, 8000) as label
---
а из (14) не работает? Вроде лучший вариант должен быть.
---
Из (14) ошибка: [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'max'.
---
тогда точно ограничение провайдера.
---
еще и так работает:

```1c
    ТекстЗапроса = "SEL ECT id, f_parent, f_label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND CAST(f_label as varchar(max))='"+a_label+"'";
```
---
ТекстЗапроса = "SEL ECT id, f_parent, f_label FR OM "+ТаблицаSQL_Enum+" WHERE f_parent='"+a_parent+"' AND CAST(f_label as varchar(max))='"+a_label+"'";
(14) Ошибка:
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'max'.
---
в цитируемом варианте запроса нет max. Эта ошибка не отсюда.
---
Исправил текст запроса.
---
CONVERT(varchar(max), f_label) вот так попробуй: CAST (f_label AS varchar (25))
---
Такой вариант тоже не рабочий:

```1c
    ТекстЗапроса = "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+"'";
```

И такой:

```1c
    ТекстЗапроса = "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+"'";
```