Я хочу сумму столбца, имеющего тип данных nvarchar в SQL Server 2008 - PullRequest
1 голос
/ 13 декабря 2011

Здесь у меня есть тест таблицы с идентификатором столбца с типом данных. Nvarchar содержит такие значения, как 1234 23680 45 9 0

так что я хочу сделать сумму этих значений. В основном я хочу сделать манипуляции с вышеуказанными числами. пожалуйста, сделайте необходимое как можно скорее.

1 Ответ

1 голос
/ 13 декабря 2011

Нечто подобное возможно.

declare @T table(id nvarchar(10))

insert into @T values
(N'१२३४'),
(N'२३६८०'), 
(N'४५९०')

select sum(cast(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
         id , N'०', N'0')
            , N'१', N'1')
            , N'२', N'2')
            , N'३', N'3')
            , N'४', N'4')
            , N'५', N'5')
            , N'६', N'6')
            , N'७', N'7')
            , N'८', N'8')
            , N'९', N'9') as int))
from @T

Результат:

(No column name)
29504

Обновление:

Для возможности повторного использования вы можете создать скалярную функцию:

create function dbo.DevanagariToInt(@Value nvarchar(10)) returns int
begin
  return cast(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
           @Value
         , N'०', N'0')
         , N'१', N'1')
         , N'२', N'2')
         , N'३', N'3')
         , N'४', N'4')
         , N'५', N'5')
         , N'६', N'6')
         , N'७', N'7')
         , N'८', N'8')
         , N'९', N'9') as int)
end

И используйте это так:

select sum(dbo.DevanagariToInt(ID))
from @T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...