Как вставить число с плавающей точкой с кавычками в числовое поле? - PullRequest
2 голосов
/ 03 ноября 2010

У меня есть длинный скрипт, который пытается вставить значения с плавающей точкой с кавычками (т. Е. '15.6') в поля с плавающей точкой, используя T-SQL.

У меня есть основания полагать, что этот скрипт работает на компьютере разработчика, но из-за кавычек он не работает на моем SQL Server 2008.

Есть ли способ настроить мой сервер на игнорирование этих кавычек, когда столбец числовой? Это было бы намного проще, чем редактировать скрипт.

Ответы [ 4 ]

2 голосов
/ 04 ноября 2010

Бывает, что указанные значения автоматически преобразуются в числа при необходимости.

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

Теперь, когда я изменил Региональные настройки в панели управления, все работает.

1 голос
/ 03 ноября 2010

Я бы посоветовал вам сначала проверить уровни ревизий между двумя серверами sql.Следующее сработало на двух, которые я попробовал;версии 10.0.2746 и 10.0.1600

/****** Object:  Table [dbo].[TestTable]    Script Date: 11/03/2010 14:48:11 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[TestTable](
    [test] [float] NOT NULL
) ON [PRIMARY]


GO

insert into TestTable(test) values ('15.6')
1 голос
/ 03 ноября 2010

Нет, кавычки означают, что он не числовой: вам придется изменить скрипт.

Откуда SQL Server узнает вас действительно означает float?

Я также сомневаюсь, что он работает и на другом экземпляре SQL Server.

0 голосов
/ 03 ноября 2010

Как сказал gbn, SQL Server видит что-либо в одинарных кавычках в виде строки.

Альтернативой (которая по-прежнему будет включать изменение скрипта, но может быть проще, чем удаление кавычек), было бы выполнить приведение кit:

CAST('12.5' AS FLOAT)

... вернет значение с плавающей запятой, которое вы можете использовать по своему усмотрению.

...