Неявное преобразование ТЕКСТА в varchar / nvarchar

У меня есть довольно большая историческая таблица, которая сейчас тормозит моих пользователей. Одна из важных вещей, которые я сделал, чтобы решить эту проблему, - это преобразование текстовых полей в поля nvarchar (max) или varchar (max). Я использую nvarchar из-за проблем с Unicode / преобразованием, которые могут возникнуть.

Мой вопрос: будет ли интерфейс, если объявляется явное значение ТЕКСТА, неявно преобразовываться при вставке в таблицу?

Мне интересно, как поля неявно преобразуются с помощью оператора ALTER TABLE, который я использовал для первоначального преобразования.

Эта таблица используется во многих местах, и размещение CONVERT везде, где на него ссылаются, будет, мягко говоря, проблематично.

Я пробовал протестировать это локально, но локальные переменные ТЕКСТА не допускаются при локальном запуске.


person 10thTiger    schedule 27.05.2015    source источник
comment
Вы спрашиваете о интерфейсе? Вы ничего не рассказали о своем интерфейсе ...   -  person Amit    schedule 27.05.2015
comment
Вы говорите, что ваш интерфейс выполняет sql, в котором есть текстовая переменная?   -  person Sean Lange    schedule 27.05.2015
comment
Нет. Я не спрашиваю о внешнем интерфейсе. Внешний интерфейс МОЖЕТ (я еще не знаю) явно попытаться вставить что-то в таблицу как ТЕКСТ. Как сканирование или файл изображения. Вот для чего и предназначена эта таблица, все ее документы. Мне просто интересно, есть ли неявное преобразование или способ, которым я могу заставить неявное преобразование на всякий случай, если кто-то явно пытается вставить объявленную текстовую переменную   -  person 10thTiger    schedule 27.05.2015


Ответы (1)


Вы можете просто использовать гипс?

CAST( @VARIABLEFROMFRONTEND as NVARCHAR(MAX) )

Вы можете добавить к нему оператор if, чтобы проверить наличие ошибки, прежде чем разрешить попытку преобразования. В случае ошибки, я не уверен, что она произойдет, но стоит ее исправить.

person Ryan David Hocking    schedule 27.05.2015
comment
Да я мог. НО это не совсем то, что я ищу. Я не являюсь специалистом по внешнему интерфейсу в своей компании, и мне придется приложить немало усилий, чтобы это поле было преобразовано как varchar. Я пытаюсь выяснить, есть ли в SQL-сервере неявное преобразование для хранения информации или команде придется прогонять код, помещая CAST повсюду. т.е. Может ли явное текстовое поле быть сохранено в поле nVarchar (max). - person 10thTiger; 29.05.2015