2012-04-13 2 views
0

У меня есть приложение, которое позволяет вычислять входные данные перед тем, как записывать их в таблицу.SQL Server: как выполнять математические вычисления в строке?

Ни одна из расчетов не может быть выполнена на C#, все должно быть выполнено в T-SQL.

Приложение создает инструкцию insert с возможными вложенными вычислениями на основе пользовательского ввода.

Один образец представляет собой целое число, которое делится на 10, а затем отбрасывается до varchar.

CAST((' (CAST(6828 AS BIGINT)) /10') AS NVARCHAR(MAX)) , 

Это часть более крупного оператора INSERT, построенного на основе ввода пользовательского интерфейса.

Как я могу получить внутреннюю часть (CAST(6828 AS BIGINT)) /10?

ответ

1

Вы можете использовать sp_executesql для выполнения целых строк. Например:

EXEC sp_executesql N'SELECT CAST(CAST(6828 AS BIGINT)) /10 AS NVARCHAR(MAX))'; 

See more here.

+1

Это не компилируется - Я думаю, что это должно быть так: 'EXEC sp_executesql N'SELECT CAST ((CAST (6828 AS BIGINT)/10) AS NVARCHAR (MAX)) '' – Bridge

+0

+1 Спасибо мост –