Double sql: Разница между float и double в SQL

sql — Ошибка «Приведение строки к типу «Double» при построении запроса


Вопрос задан


Изменён
6 лет 3 месяца назад


Просмотрен
471 раз

Программно создаю запрос для отправки в базу. Запрос выбирает записи по условию Filt, и среди записей с номером строки в диапазоне от Num до NumEnd:

Dim Num As Integer = Args("Num")
Dim NumEnd As Integer = Num + 30
Query = "SELECT * FROM (SELECT [RecordID],[PageName],[Lang],[ControlName],[ControlValue],[StatusID],ROW_NUMBER() OVER (Order by [RecordID]) AS RowNum FROM [dbo].[core_Multilang] where ControlValue like '%" + Filt + "%') as x WHERE RowNum>'" + Num + "' and RowNum<'" + NumEnd + "'; "

Но при создании запроса возникает ошибка:

Приведение строки "SELECT * FROM (SELECT [RecordID]" к типу "Double" является недопустимым. 

Как её исправить?

  • sql
  • select
  • vb.net






3

Не знаток VB, но судя по всему интерпретатор считает что Query должен иметь тип Double. Соответственно необходимо явно указать что тип String. Както так:

Dim Num As Integer = Args("Num")
Dim NumEnd As Integer = Num + 30
Dim Query As String = "SELECT * FROM (SELECT [RecordID],[PageName],[Lang],[ControlName],[ControlValue],[StatusID],ROW_NUMBER() OVER (Order by [RecordID]) AS RowNum FROM [dbo].[core_Multilang] where ControlValue like '%" + Filt + "%') as x WHERE RowNum>'" + Num + "' and RowNum<'" + NumEnd + "'; " 







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации



Почта

Необходима, но никому не показывается




By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.


Как поставить двойной тип на SQL сервере?

спросил

Изменено
10 лет, 11 месяцев назад

Просмотрено
38 тысяч раз

Мне нужно сохранить в SQL Server следующее двойное значение:

double x = 52.22105994970536;

Какой тип данных SQL Server следует использовать для хранения значений этого типа. Возможно, десятичное число или число с плавающей запятой ?

Я не уверен, что это актуально, но мне нужно сохранить эти значения с помощью . не , для разделения дробной части значений. Есть ли параметр в SQL Server, о котором я должен знать, чтобы это произошло?

  • sql
  • sql-сервер

3

Я не уверен, что это актуально, но мне нужно сохранить эти значения в файле . не а, к
отделить дробную часть значений. Есть ли настройка в
SQL Server, о котором я должен знать, чтобы это произошло?

Нет, вполне достаточно изучить программирование, чтобы понять, что это вообще не вопрос — десятичные дроби хранятся как десятичные дроби. «.» или «,» являются частью визуального преобразования (так сказать, вызова «ToString») для печати значения и не имеют ничего общего со значением.

Если вы хотите сохранить двойника, вы хотите сохранить двойника. Точка. Если вы хотите убедиться, что ваша программа представляет его с помощью «.», то ПРОГРАММИРУЙТЕ ИНТЕРФЕЙС ПРАВИЛЬНО, но не беспокойте этим внутреннюю память SQL Server. Обычно они отображаются в локали, что в большинстве случаев умнее, чем жесткое кодирование. ТАК, может быть, вы принудительно меняете локаль пользовательского интерфейса? Или жестко закодируйте преобразование, которое будет применяться каждый раз, когда вы распечатываете значение.

Какой тип данных SQL Server следует использовать для хранения значений этого типа. Возможно десятичное или
плавать?

http://msdn.microsoft.com/en-us/library/ms187752.aspx

объясняет типы данных сервера sql.

Выберите тот, который соответствует вашим требованиям. Вероятно, версия с плавающей запятой с заданной точностью. Теперь, если вы боитесь, потому что они называются «приблизительно числовыми», обратите внимание, что двойное число ЯВЛЯЕТСЯ приблизительным числовым, также в C # (или любом другом языке интерфейса, который вы используете — вы не говорите нам).

Рекомендуемые сопоставления по умолчанию находятся по адресу http://msdn.microsoft.com/en-us/library/ms13109.2.aspx и будет указывать на «поплавок».

4

Как сказал Damien_The_Unbeliever, форматирование (ну, должно быть, не имеет значения) форматирование — это то, что вы делаете для отображения, составления отчетов и т. д. используются для доступа к нему имеет десятичный тип. Если вы манипулируете числами как удвоениями, то использование десятичного числа на задней панели не даст вам многого, так как вы все равно будете вручную справляться с неотъемлемыми неточностями представления с плавающей запятой.

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

sql server — идентификатор импорта Excel, тип данных Double

Задавать вопрос

спросил

Изменено
7 лет, 3 месяца назад

Просмотрено
5к раз

Я получаю файл из другого отдела, который содержит столбец id. Столбец id в основном состоит из цифр, но также содержит некоторые буквы.

Я получаю файл в формате XLS.

Когда я пытаюсь использовать функцию импорта SQL, она считывает столбец id как двойной целочисленный тип. Разве это не неправильно? Может ли двойной тип данных иметь буквы? В любом случае он правильно импортирует числовые значения для идентификатора, но не значения, начинающиеся с букв. Он также не сообщает о каких-либо ошибках или проблемах.

Я попытался преобразовать его в плоский файл и импортировать таким образом, но я также борюсь с типами данных столбца даты. (Они в формате от 13.01.2011 — я не знаю, почему мастер импорта тоже не может импортировать это).

Я хочу, чтобы конечным результатом был nvarchar. Как я могу правильно преобразовать этот файл?

  • sql-server
  • импорт
  • типы данных

Идентификатор определенно должен быть NVARCHAR, а не двойным, вы можете изменить тип, который он считает, в сопоставлениях.