#sql #sql-server #type-conversion
#sql #sql-сервер #преобразование типов
Вопрос:
Мне нужно изменить некоторые типы данных. Я пытался использовать CAST
ключевое слово, но это не устраняет проблему. Любые предложения о том, как переписать эти две строки с CAST
помощью операторов?
- При приведении из в может произойти потеря
VarChar(100)
данныхVarChar(20)
.
Код:
SELECT TOP 1 @variableId = variableId
FROM @tempTable
- При приведении из в может произойти потеря
NVarChar(512)
данныхNVarChar
.
Код:
SELECT myVariable
FROM tableName
Я попытался сделать что-то вроде следующего, но все равно выдает ошибку:
CAST((myVariable) as nvarchar)
Комментарии:
1. В чем ваша проблема? При сокращении символьной строки данные могут быть потеряны. Это ожидаемо и почему вы получаете предупреждение.
2. Пожалуйста, будьте более конкретны. Что вы пробовали? Как выглядят ваши данные и схема? Предоставленные вами сообщения объясняют сами себя: ваш целевой тип — to small, чтобы сохранить данные из исходного типа данных.
3. Хорошо, дайте мне минуту, и я обновлю сообщение!
Ответ №1:
CAST
используется для преобразования между типами данных. Это больше похоже на то, что вы должны использовать LEFT
вместо:
SELECT TOP 1 @variableId = LEFT(variableId,20)
FROM @tempTable
Это не даст вам никакого предупреждения, поскольку система предполагает, что вы уже знаете, что потеряете правильные 80 символов.
Ответ №2:
Для использования CONVERT
вместо CAST
:
CONVERT(nvarchar, myVariable)
Является допустимым синтаксисом, а также:
CONVERT(varchar(20), myVariable)
Но для получения части строки мы используем SUBSTRING()
или LEFT()
или RIGHT()
функции, подобные этой:
-
SUBSTRING( value_expression , start_expression , length_expression )
Возвращает часть символьного, двоичного, текстового или графического выражения.
-
LEFT ( character_expression , integer_expression )
Возвращает левую часть символьной строки с указанным количеством символов.
-
RIGHT ( character_expression , integer_expression )
Возвращает правую часть символьной строки с указанным количеством символов.