Целое ноль, "0" будет игнорироваться при загрузке на SQL Server - PullRequest
1 голос
/ 17 июля 2009

У меня есть страница, которая позволяет пользователю загружать файл Excel и вставлять данные в файл Excel на SQL Server. Теперь у меня есть маленькая проблема, что в файле Excel есть столбец со значениями, такими как «001», «029», «236». Когда он вставляется в SQL Server, ноль впереди будет игнорироваться в SQL, поэтому данные станут «1», «29», «239». Тип данных для столбца в SQL - varchar (10). Как это решить?

Ответы [ 6 ]

2 голосов
/ 17 июля 2009

Excel, похоже, автоматически конвертирует значения ячеек в числа. Попробуйте обработать префикс содержимого ячейки одинарной кавычкой в ​​листе Excel. Например, '001. Если вы не можете доверять пользователям это, используйте процедуру форматирования строки, чтобы дополнить цифры нулями слева.

1 голос
/ 17 июля 2009

Если пользователь введет 001 в Excel, он будет преобразован в число 1.

Если пользователь введет '001 в Excel, он будет сохранен в ячейке как текст.

Если ячейка предварительно отформатирована с числовым форматом «@», то, когда пользователь вводит 001 в ячейку, она будет введена как текст «001». Числовой формат «@» сообщает Excel, что ячейка является текстовой ячейкой, и любая запись (независимо от того, выглядит ли она как число, дата, время, дробь и т. Д.) Должна просто помещаться в ячейку как есть - как текст клетка.

Можете ли вы сказать своим пользователям предварительно отформатировать этот столбец с "@"? Как правило, это самый надежный способ справиться с этим, поскольку пользователю не нужно помнить, чтобы ввести '001.

1 голос
/ 17 июля 2009

Что-то должно преобразовывать данные в ячейке Excel из строки в целое число. Как вы выполняете вставку?

0 голосов
/ 22 июля 2009

Excel всегда делает это, и это неприятно. Есть три обходных пути, о которых я знаю:

  1. ДО ввода данных в любую ячейку в Excel отформатируйте ячейку как текст (вы можете сделать целый столбец, если необходимо.) Это работает, только если вы управляете электронными таблицами и пользователями, чего в принципе никогда не бывает :-)

  2. Предположим, вы получите набор цифр и / или текста в данных Excel и исправите его в Excel перед импортом: добавьте столбец в электронную таблицу и используйте функцию TEXT () для преобразования числа в текст, как в = ТЕКСТ (A2, "000"); заполнить вниз. Также предполагается, что вы можете редактировать лист.

  3. Предположим, вам нужно исправить цифры при вставке в ваш код. В зависимости от того, как вы загружаете данные, это может произойти в T-SQL или другом коде. В TSQL это выражение работает для заполнения нулями до 3 символов ширины: справа ('000' + приведение (2 как varchar (3)), 3)

0 голосов
/ 17 июля 2009

Excel, вероятно, является виновником здесь. Попробуйте конвертировать ваш файл в CSV и посмотрите, как он получится. Если в новом CSV-файле отсутствуют начальные нули, проблема в Excel.

0 голосов
/ 17 июля 2009

Может быть, поможет настройка типа данных "Текст" для ячейки Excel.

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