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

Откуда:
Сообщений: 100
Привет

Пишу функцию удаления служебных символов.
Наткнулся на такую вот вещь.
Почему в случае VarChar печатается длина 0, а в случае nvarchar 1?

declare  @Temp VarChar(1000)
select @Temp = CHAR(0)

While PatIndex('%[^A-Za-z0-9]%', @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex('%[^a-z0-9]%', @Temp), 1, '')
        
 print len(@Temp)


declare  @Temp NVarChar(1000)
select @Temp = CHAR(0)

While PatIndex('%[^A-Za-z0-9]%', @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex('%[^a-z0-9]%', @Temp), 1, '')
        
 print len(@Temp)
8 июн 12, 17:16    [12689635]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Не-а:

1
1

Microsoft SQL Server 2005 - 9.00.5057.00 (Intel X86)
Mar 25 2011 13:50:04
Copyright (c) 1988-2005 Microsoft Corporation
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

Кроме того, во втором случае должно быть
select @Temp = nCHAR(0)
, хотя в данном случае это ничего не меняет.
8 июн 12, 17:25    [12689707]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
Ennor Tiegael
Не-а:

1
1

Microsoft SQL Server 2005 - 9.00.5057.00 (Intel X86)
Mar 25 2011 13:50:04
Copyright (c) 1988-2005 Microsoft Corporation
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

Кроме того, во втором случае должно быть
select @Temp = nCHAR(0)
, хотя в данном случае это ничего не меняет.


кхм. странно. неужто пофиксили что-то

автор
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
8 июн 12, 17:32    [12689778]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
iiyama
Member

Откуда:
Сообщений: 642
rinat mergenbaev,


(строк обработано: 1)
1
1

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
8 июн 12, 18:05    [12690063]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
iiyama
rinat mergenbaev,


(строк обработано: 1)
1
1

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)


очч странно. а есть идеи?
8 июн 12, 18:11    [12690095]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
у меня

declare  @Temp NVarChar(1000)
select @Temp = CHAR(0)
select PatIndex('%[^A-Za-z0-9]%', @Temp) as [PatIndex]
go


уверенно дает 0 для n-типа и 1 для "обычной строки" и на 2005 и на 2008
8 июн 12, 19:21    [12690400]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
step_ks
Member

Откуда:
Сообщений: 936
А Collation у кого какой?
8 июн 12, 20:07    [12690570]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
step_ks
А Collation у кого какой?


а на домашнем сервере (2008 R2)
у меня тоже возвращает

1
1

на домашнем сервере результат одинаковый для
Latin1_General_CI_AS, Cyrillic_General_CI_AS

на работе стоит Latin1_General_CI_AS

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


2 Crimean

а вы уверены, что не наоборот, как у меня?
8 июн 12, 22:17    [12690921]     Ответить | Цитировать Сообщить модератору
 Re: CHAR(0)  [new]
step_ks
Member

Откуда:
Сообщений: 936
rinat mergenbaev
2 Crimean

а вы уверены, что не наоборот, как у меня?

У него как раз как у вас и есть.


declare  @Temp NVarChar(1000)
select @Temp = CHAR(0)
select PatIndex('%[^A-Za-z0-9]%', @Temp) as [PatIndex]
go
declare  @Temp VarChar(1000)
select @Temp = CHAR(0)
select PatIndex('%[^A-Za-z0-9]%', @Temp) as [PatIndex]
go

select databasepropertyex(db_name(),'Collation'),serverproperty('Collation')
select @@version


0
0

Cyrillic_General_CI_AS Cyrillic_General_CI_AS

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)


0
0

Cyrillic_General_CI_AS Cyrillic_General_CI_AS

Microsoft SQL Server 2005 - 9.00.5057.00 (X64) Mar 25 2011 13:33:31 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)


0
0

Cyrillic_General_CI_AS Cyrillic_General_CI_AS

Microsoft SQL Server 2000 - 8.00.2055 (Intel X86) Dec 16 2008 19:46:53 Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)


0
1

SQL_Latin1_General_CP1251_CI_AS SQL_Latin1_General_CP1251_CI_AS

Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)


0
1

SQL_Latin1_General_CP1251_CI_AS SQL_Latin1_General_CP1251_CI_AS

Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Dec 10 2010 10:38:40 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)


0
1

SQL_Latin1_General_CP1251_CI_AS SQL_Latin1_General_CP1251_CI_AS

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)


0
0

Cyrillic_General_CI_AS Cyrillic_General_CI_AS

Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


0
1

SQL_Latin1_General_CP1_CI_AS SQL_Latin1_General_CP1_CI_AS

Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
(хм, по @@version даже не видно, что это LocalDB)
9 июн 12, 08:55    [12691865]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить