Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 view не работает с TOP  [new]
PG81
Member

Откуда: Тверь
Сообщений: 882
Есть такая вьюха
alter view [dbo].[ClientView]
as
    select C.ID
          ,C.Name
          ,C.Phone
          ,LastIPFromAsInt = dbo.StrIP2Int(C.LastIPFrom)
          ,GNR.city_id
    from dbo.Client C as C
    join dbo.geoip_net_ru GNR on dbo.StrIP2Int(C.LastIPFrom) between GNR.begin_ip and GNR.end_ip
go


в ней используется функция
ALTER FUNCTION [dbo].[StrIP2Int]
(@StrIP varchar(15))
RETURNS bigint
AS
BEGIN
	RETURN CAST(
		CAST(PARSENAME(@StrIP,4) as bigint) * 0x1000000 +
		CAST(PARSENAME(@StrIP,3) as bigint) * 0x10000 +
		CAST(PARSENAME(@StrIP,2) as bigint) * 0x100 +
		CAST(PARSENAME(@StrIP,1) as bigint)
	as bigint);
END



Вьюха почему то вот так не работает
select top(10) * from ClientView

если добавить ORDER BY то все нормально. В чем может быть проблема?
Выдается сообщение
Error converting data type nvarchar to bigint.
MS SQL Server 2008
13 дек 13, 12:42    [15287666]     Ответить | Цитировать Сообщить модератору
 Re: view не работает с TOP  [new]
aleks2
Guest
Вот так выполните

select  * from ClientView


и не валите на View.
13 дек 13, 12:44    [15287688]     Ответить | Цитировать Сообщить модератору
 Re: view не работает с TOP  [new]
Glory
Member

Откуда:
Сообщений: 104751
PG81
о. В чем может быть проблема?
Выдается сообщение
Error converting data type nvarchar to bigint.
MS SQL Server 2008

В том, что в таблице dbo.Client есть данные, которые нельзя сконвертировать в bigint.

  select dbo.StrIP2Int(C.LastIPFrom)
    from dbo.Client C as C
13 дек 13, 13:26    [15288045]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить