Работая в базе данных SQL, есть ли способ преобразовать float в nvarchar без преобразования float в научную нотацию? - PullRequest
0 голосов
/ 06 июня 2019

Я строю базу данных с нуля. В настоящее время у меня есть массивный лист Excel, который не может работать из-за объема хранимых данных. Я использую базу данных SQL Server для хранения данных.

Прямо сейчас все, кроме одного из столбцов, которые я использую, работают. Есть идентификатор, который мне нужно использовать в большей части моей базы данных. К сожалению, половина идентификаторов буквенно-цифровые и имеют цифры (без букв). Чтобы получить данные из Excel на SQL Server, я сохранил половину данных как float, а другую половину как NVARCHAR. Когда данные вышли из Excel, я создал третий столбец и соединил данные, используя код, показанный ниже:

UPDATE dbo.Table
SET ID = CONVERT(NVARCHAR(255), ISNULL(NumID, N'')) + N'' + CONVERT(NVARCHAR(255), ISNULL(LetID, N''))

После запуска кода я создал новую проблему. Числовые данные теперь записываются как «4.01867e + 007», а не «40186720».

Кто-нибудь знает, почему или как это исправить? Я хотел бы, чтобы данные читались как «40186720», а не имели букв, чтобы их было легче использовать.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Если числовая часть будет в пределах ± 9 квинтиллионов (на самом деле 9,223,372,036,854,775,807), то вы можете преобразовать ваш float в bigint перед приведением к тексту:

UPDATE dbo.Table
SET ID = CONVERT(NVARCHAR(255), ISNULL(convert(bigint,NumID), N'')) + N'' + CONVERT(NVARCHAR(255), ISNULL(LetID, N''))
0 голосов
/ 06 июня 2019

Вы пробовали использовать CAST? CONVERT имеет необязательный параметр стиля, который, если оставить его пустым (в зависимости от вашей БД), вероятно, будет установлен в значение по умолчанию, вызывающее проблему ...

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