Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Есть большой binary(4000).
Как установить бит в определенной позиции?
Т.е. являестя ли CLR функция лучшим решением с точки зрения производительности в данном случае?


public static SqlBinary flip_bit(SqlBinary target, SqlInt32 pos)
    {
        BitArray ba = new BitArray(target.Value);
        ba.Set(pos.Value, true ); 
 
        byte[] by_result = new byte[target.Length];
        ba.CopyTo(by_result, 0);
 
        return new SqlBinary(by_result);
    }
28 янв 14, 15:12    [15482463]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Winnipuh
Как установить бит в определенной позиции?

Считать байт. Использовать bitwise logical OR. Записать байт.
28 янв 14, 15:27    [15482615]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
Winnipuh
Т.е. являестя ли CLR функция лучшим решением с точки зрения производительности в данном случае?
Уверен, что стоимость вызова будет неизмеримо больше, чем прямое обновление бита, несмотря на более медленный T-SQL
28 янв 14, 15:36    [15482688]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
declare @b binary(4000) = 0x0, @p int = 83 /*83-й бит*/;

select
 cast(stuff(@b, @p / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(4000));
28 янв 14, 15:38    [15482707]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
alexeyvg
Winnipuh
Т.е. являестя ли CLR функция лучшим решением с точки зрения производительности в данном случае?
Уверен, что стоимость вызова будет неизмеримо больше, чем прямое обновление бита, несмотря на более медленный T-SQL


в том-то и вопрос...
28 янв 14, 15:40    [15482719]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
invm
declare @b binary(4000) = 0x0, @p int = 83 /*83-й бит*/;

select
 cast(stuff(@b, @p / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(4000));


ок, только для позиций 0-7 возвращается NULL;

Видимо надо так:
-- @p+8

declare @b binary(4000) = 0x0, @p int = 0 /*83-й бит*/;

select
 cast(stuff(@b, (@p+8) / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(4000));
28 янв 14, 15:46    [15482768]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Winnipuh
invm
declare @b binary(4000) = 0x0, @p int = 83 /*83-й бит*/;

select
 cast(stuff(@b, @p / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(4000));


ок, только для позиций 0-7 возвращается NULL;

Видимо надо так:
-- @p+8

declare @b binary(4000) = 0x0, @p int = 0 /*83-й бит*/;

select
 cast(stuff(@b, (@p+8) / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(4000));




даже так:

--(@p+8) / 8+1

declare @b binary(4000) = 0x0, @p int = 3 /*83-й бит*/;

select
 cast(stuff(@b, (@p+8) / 8+1, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(4000));
28 янв 14, 15:48    [15482786]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
поспешил, вот так

declare @b binary(4000) = 0x0, @pos int = 83 /*83-й бит*/,  @p int = @pos+8 ;

select
 cast(stuff(@b, @p / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(4000));
28 янв 14, 17:08    [15483593]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Свои 5 копеек.

Winnipuh
Т.е. являестя ли CLR функция лучшим решением с точки зрения производительности в данном случае?
Уверен, что стоимость вызова будет неизмеримо больше, чем прямое обновление бита, несмотря на более медленный T-SQL
Сам по себе вызов скалярок (без учёта содержимого) намного медленнее чем вызов CLR (без учёта содержимого).
Так что имхо иногда можно и закрыть глаза.

Stuff как ни странно не лучше конкатенации, да и он не работает с Binary, а лишняя конвертация данных будет лишней.
CREATE FUNCTION [dbo].[fnBinarySet] (
	@Value		VarBinary(8000)
,	@Position	Int
) RETURNS TABLE AS RETURN	-- SELECT * FROM dbo.fnBinarySet(0x100000,9) A, dbo.fnBinarySet(0x100200,9) B
SELECT	 L + Convert(Binary(1),M | P) + R	AS [Set]
	,L + Convert(Binary(1),M &~P) + R	AS [UnSet]
	,L + Convert(Binary(1),M ^ P) + R	AS [XOR]
FROM	(SELECT	SubString(@Value,1,@Position / 8)
	,	SubString(@Value,  @Position / 8 + 1,   1)
	,	SubString(@Value,  @Position / 8 + 2,8000)
	,	Power(2,@Position % 8)	)	X(L,M,R,P)
GO
Но менее глючно (если выйти за диапазон).
28 янв 14, 18:09    [15484050]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
2 Mnior, спасибо за функцию.

Обратная задача: как лучше проверить установлены ли биты в binary(60) ?
Например, как проверить установлены ли в @banner2 те биты, которые установлены в @banner?
Т.е. в данном случае @banner является шаблоном проверки.

Или по указанной позиции лучше?


declare @b binary(60) = 0x0100
declare @pos int=0 /*бит*/  
declare @p int = @pos+8 ;
declare @banner binary(60) = 0x0
declare @banner2 binary(60) = 0x0

select @banner = cast(stuff(@b, @p / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(60))

set @pos = 5
set @p = @pos+8 ;

select @banner2 = cast(stuff(@b, @p / 8, 1, cast(substring(@b, @p / 8, 1) | power(2, @p % 8) as binary(1))) as binary(60))

select @banner, @banner2
4 июн 14, 17:38    [16121242]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Winnipuh
как проверить установлены ли в @banner2 те биты, которые установлены в @banner?
declare @banner binary(60) = 0x0, @banner2 binary(60) = 0x0;

with x as
(
 select 1 as p

 union all
 
 select
  p + 1
 from
  x
 where
  p < 60
)
select
 *
from
 x cross apply
 (select cast(substring(@banner, p, 1) as tinyint)) t1(b) cross apply
 (select cast(substring(@banner2, p, 1) as tinyint)) t2(b)
where
 t1.b & t2.b <> t1.b;
Если запрос ничего не вернул, значит в @banner2 установлены все разряды, установленные в @banner.
4 июн 14, 18:12    [16121573]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
2 invm спасибо!

еще такой вопрос:

если я хочу из большой таблицы (10 млн записей) делать выборки по критерию "установлены указанные биты", как луше сделать такой запрос, чтобы выборки были быстрые?
Индексы я не вижу как сделать.....

CREATE FUNCTION  [dbo].[fnBinarySet3] 
(@Value varbinary(60),@Position int)
RETURNS varbinary(60) AS  
BEGIN 
declare @retValue varbinary(60)

SELECT	 @retValue=L + Convert(Binary(1),M | P) + R
FROM	(SELECT	SubString(@Value,1,@Position / 8),
		SubString(@Value,  @Position / 8 + 1,   1)
	,	SubString(@Value,  @Position / 8 + 2,60)
	,	Power(2,@Position % 8)	)	X(L,M,R,P);

	return @retValue
END

GO
create table t
(
int_id int not null identity primary key,
banner binary(60)
)

declare @i int
set @i=1000
while @i>0
begin
	insert into t (banner) values(0x0);
	set @i = @i-1;
end
update t set banner= [dbo].[fnBinarySet3] (banner,int_id%48)

select top 100 * from t where <------- 1 и 5 биты установлены
4 июн 14, 18:33    [16121712]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Индекс по вычисляемым полям.
4 июн 14, 18:37    [16121739]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
Индекс по вычисляемым полям.


например в данном случае как?

varbinary(60) -> 480 бит, которые при выборке могут проверяться на установлен или нет.
4 июн 14, 18:59    [16121878]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Winnipuh
Гавриленко Сергей Алексеевич
Индекс по вычисляемым полям.


например в данном случае как?

varbinary(60) -> 480 бит, которые при выборке могут проверяться на установлен или нет.
Тогда менять структуру и разворачивать ваши 480 бит в 480 записей. Ну или по записи на каждый выставленный бит.

Сообщение было отредактировано: 4 июн 14, 19:08
4 июн 14, 19:04    [16121903]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
Winnipuh
пропущено...


например в данном случае как?

varbinary(60) -> 480 бит, которые при выборке могут проверяться на установлен или нет.


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



да, но в случае когда в исходной таблице даже 10 млн записей - это превратится в 4.8 млрд
А может быть и 100 млн...
я как раз хотел сэкономить, сделать 1=1, но чтобы держать до 480 флажков....
4 июн 14, 19:22    [16122015]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Winnipuh
А может быть и 100 млн...
Во-первых, можно сэкономить на одном из состояний, если подавляющее число битов всегда или выставлено, или нет. Во-вторых, вас пугают миллиарды записей? Они не кусаются.
4 июн 14, 19:25    [16122034]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
Winnipuh
А может быть и 100 млн...
Во-первых, можно сэкономить на одном из состояний, если подавляющее число битов всегда или выставлено, или нет. Во-вторых, вас пугают миллиарды записей? Они не кусаются.


меня то нет, но все-таки...

хотелось чего-то эдакого, красивого решения.. ведь по сути то получается можно уложить все в 60 байт...
Это все еще может и апдейтиться, и если нужно апдейтить 10 млн - это одно а если 4 млрд - немножко другое .

Можно еще было бы пойти на 480 байт в записи вместо 60 байт, т.е. флаг в байте, а не в бите, если бы это помогло оптимизнуть выборки.
4 июн 14, 19:41    [16122111]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ну, в принципе, можно и правда попробовать попилить по байтам: в самом худшем случае, если поиск производится по одному биту на байт - это поиск по 128 возможным дискретным значениям, в которых этот бит установлен (для проверки двух битов на байт кол-во сокращается до 64-х и т.д.).
4 июн 14, 19:53    [16122175]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
Ну, в принципе, можно и правда попробовать попилить по байтам: в самом худшем случае, если поиск производится по одному биту на байт - это поиск по 128 возможным дискретным значениям, в которых этот бит установлен (для проверки двух битов на байт кол-во сокращается до 64-х и т.д.).


индексы в таком случае какие-то можно построить, чтобы как-то оптимизировать ?

или выбирать типа substring(banner, n, 1) в лоб?
4 июн 14, 20:30    [16122355]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Боже я вижу скалярки. Зачем?

Winnipuh
Обратная задача: как лучше проверить установлены ли биты в binary(60) ?
А чё тут сложного, просто сравниваешь что BinCol & @BinVar = @BinVar или BinCol & @BinVar != 0x
Конечно нельзя прямиком применять Bitwise операторы VarBinary с VarBinary, но это легко определить:
+ dbo.fnBitwise
CREATE FUNCTION [dbo].[fnBitwise] (
	@BLeft	VarBinary(64)
,	@BRight	VarBinary(64)
) RETURNS TABLE AS RETURN
SELECT	Convert(VarBinary(64),SubString(
	Convert(VarBinary(8),SubString(@BLeft, 1,8) & Convert(BigInt,SubString(@BRight, 1,8)))
+	Convert(VarBinary(8),SubString(@BLeft, 9,8) & Convert(BigInt,SubString(@BRight, 9,8)))
+	Convert(VarBinary(8),SubString(@BLeft,17,8) & Convert(BigInt,SubString(@BRight,17,8)))
+	Convert(VarBinary(8),SubString(@BLeft,25,8) & Convert(BigInt,SubString(@BRight,25,8)))
+	Convert(VarBinary(8),SubString(@BLeft,33,8) & Convert(BigInt,SubString(@BRight,33,8)))
+	Convert(VarBinary(8),SubString(@BLeft,41,8) & Convert(BigInt,SubString(@BRight,41,8)))
+	Convert(VarBinary(8),SubString(@BLeft,49,8) & Convert(BigInt,SubString(@BRight,49,8)))
+	Convert(VarBinary(8),SubString(@BLeft,57,8) & Convert(BigInt,SubString(@BRight,57,8)))
,1,MaxLen))	AS [AND]
,	Convert(VarBinary(64),SubString(
	Convert(VarBinary(8),SubString(@BLeft, 1,8) | Convert(BigInt,SubString(@BRight, 1,8)))
+	Convert(VarBinary(8),SubString(@BLeft, 9,8) | Convert(BigInt,SubString(@BRight, 9,8)))
+	Convert(VarBinary(8),SubString(@BLeft,17,8) | Convert(BigInt,SubString(@BRight,17,8)))
+	Convert(VarBinary(8),SubString(@BLeft,25,8) | Convert(BigInt,SubString(@BRight,25,8)))
+	Convert(VarBinary(8),SubString(@BLeft,33,8) | Convert(BigInt,SubString(@BRight,33,8)))
+	Convert(VarBinary(8),SubString(@BLeft,41,8) | Convert(BigInt,SubString(@BRight,41,8)))
+	Convert(VarBinary(8),SubString(@BLeft,49,8) | Convert(BigInt,SubString(@BRight,49,8)))
+	Convert(VarBinary(8),SubString(@BLeft,57,8) | Convert(BigInt,SubString(@BRight,57,8)))
,1,MaxLen))	AS [OR]
,	Convert(VarBinary(64),SubString(
	Convert(VarBinary(8),SubString(@BLeft, 1,8) ^ Convert(BigInt,SubString(@BRight, 1,8)))
+	Convert(VarBinary(8),SubString(@BLeft, 9,8) ^ Convert(BigInt,SubString(@BRight, 9,8)))
+	Convert(VarBinary(8),SubString(@BLeft,17,8) ^ Convert(BigInt,SubString(@BRight,17,8)))
+	Convert(VarBinary(8),SubString(@BLeft,25,8) ^ Convert(BigInt,SubString(@BRight,25,8)))
+	Convert(VarBinary(8),SubString(@BLeft,33,8) ^ Convert(BigInt,SubString(@BRight,33,8)))
+	Convert(VarBinary(8),SubString(@BLeft,41,8) ^ Convert(BigInt,SubString(@BRight,41,8)))
+	Convert(VarBinary(8),SubString(@BLeft,49,8) ^ Convert(BigInt,SubString(@BRight,49,8)))
+	Convert(VarBinary(8),SubString(@BLeft,57,8) ^ Convert(BigInt,SubString(@BRight,57,8)))
,1,MaxLen))	AS [XOR]
,	*
FROM (	SELECT	DataLength(@BLeft)
	,	DataLength(@BRight)
) L (LenLeft,LenRight) CROSS APPLY (SELECT
		CASE	WHEN LenLeft >= LenRight
			THEN LenLeft
			ELSE LenRight
			END
) X (MaxLen)
GO

А далее всё топорно:
DECLARE	@Binary TABLE ([Binary] Binary(8))
INSERT	@Binary
SELECT	B.[Set]
FROM	master.dbo.spt_values	N CROSS
APPLY	dbo.fnBinarySet(0x0000000000000000,N.number) B
WHERE	N.type = 'P'
AND	N.number < 64
-------------------------------------
DECLARE	@Template1 Binary(8) = 0x0020
SELECT	*
FROM	@Binary	B CROSS
APPLY	dbo.fnBitwise(B.[Binary],@Template1)	F
WHERE	F.[AND] = @Template1

DECLARE	@Template2 Binary(8) = 0x1020
SELECT	*
FROM	@Binary	B CROSS
APPLY	dbo.fnBitwise(B.[Binary],@Template2)	F
WHERE	F.[AND] != 0x
GO
Не очень вижу смысла в индексах, если все биты равномерно распределены.
Индекс хорошо пойдёт для редких битов. Но к сожалению фильтрованные индексы нельзя применить.
CREATE TABLE #Binary (
	[Binary]	Binary(8)
,	[Filter]	AS (CASE WHEN SubString([Binary],3,1) & 4 = 4 THEN Convert(Bit,1) ELSE Convert(Bit,0) END)
)
CREATE INDEX [FI_#Binary] ON #Binary ([Filter])
SELECT	[Filter]
FROM	#Binary
WHERE	Filter = 1
DROP TABLE #Binary
5 июн 14, 14:01    [16126008]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Вот так вроде срабатывает?

select count(*) from t where SUBSTRING(banner, 3,1)&@nMask3=@nMask3 or SUBSTRING(banner, 5,1)&@nMask5=@nMask5



По поводу оптимизации такой структуры и выборок, мне ответил в другом месте Remus Rusanu

автор
Bloom filters:

... is used to test whether an element is a member of a set. False positive matches are possible, but false negatives are not.

Create a hash int/bigint column, persisted computed as a bloom of your 480 bits. Index the computed column. Search on the index, the bloom will filter out all certain negatives (hopefully a significant part), the rest (hopefully a few) you'll have to scan them and find if they truly match the bit.


Он, конечно, авторитет в этом деле, но я что-то не вижу как можно прицепить тут фильтр Блюма или хеш.
В поле banner каждый бит что-то означает... и выборка идет по значению битов в разных позициях.
5 июн 14, 14:41    [16126347]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Winnipuh
но я что-то не вижу как можно прицепить тут фильтр Блюма или хеш.
В поле banner каждый бит что-то означает... и выборка идет по значению битов в разных позициях.
Дело не в том что "каждый бит что-то означает". А в том что хеш и Блюм в частности это структуры.
А единственное что доступно в скуле это индексы, пусть даже фильтрованные и пусть даже на вычисляемых полях.
Всё равно в нём содержится как ключ индекса, так и ключ таблицы, для каждой строки.

Кстати в IBM InfoSphere BigInsights PureData for Hadoop можно указать использовать фильтра Блума (при CREATE HBASE TABLE).

По идее сюда должно подходить In-Memory таблицы. Ибо там индексы именно hash со ссылками на записи.

Но для начала надо понять что есть что. Смысл структуры это связка Many-To-Many запакованная в одно поле.
Если нормально сделать таблицу то поиск будет сводится к:
WHERE banner IN (3,5)
Где будет два тупейших Seek, которые сразу выдают нужные нам список объектов.
Для стандартного подхода - это будет самый эффективный и самый компактный вариант.
Притом если надо найти где нужно присутствие нескольких битов, то можно воспользоваться перемножением/пересечением индексов.

Как мы понимаем, тут в памяти просто будут идти подряд все строки с одним и тем же "битом"/banner/тэгом.
И как я понимаю, для этого можно попробывать 2й тип индексов In-Memory таблиц - RANGE. Который не хранит ключ для каждой строки, а хранит их букетами (Bw-Tree), на чем можно сэкономить объём.

И причём тут фильтр Блума я тоже не понял. С его помощью получают ответ на вопрос "может присутствовать что-то или нет". А нам нужно - получить набор данных по ключу.
8 июн 14, 22:03    [16139468]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Winnipuh,

Как уже писал Mnior - что-то можно ускорить, только если данные разрежены. Например, вот такой экзотикой:
/*Храним перечень затронутых байт и используем FTS для поиска*/
create function dbo.fnPhraseBuilder
(
 @source binary(16)
)
returns varchar(300)
with schemabinding
as
begin
 declare @result varchar(300) = '', @b tinyint, @i tinyint = 1;

 while @i < 17
  begin
   select
    @b = cast(substring(@source, @i, 1) as tinyint);

   if @b <> 0
    select @result = @result + case @i
     when 1 then 'первый'
     when 2 then 'второй'
     when 3 then 'третий'
     when 4 then 'четвертый'
     when 5 then 'пятый'
     when 6 then 'шестой'
     when 7 then 'седьмой'
     when 8 then 'восьмой'
     when 9 then 'девятый'
     when 10 then 'десятый'
     when 11 then 'одиннадцатый'
     when 12 then 'двенадцатый'
     when 13 then 'тринадцатый'
     when 14 then 'четырнадцатый'
     when 15 then 'пятнадцатый'
     when 16 then 'шестнадцатый'
    end + ' ';
    
   select
    @i += 1; 
  end;

 return @result;
end;
go

create table dbo.Test
(
 id int identity constraint PK_Test primary key,
 binary_value binary(16) not null,
 usedbytes_phrase as dbo.fnPhraseBuilder(binary_value) persisted
);
go

create fulltext catalog Test;
go

create fulltext index on dbo.Test (usedbytes_phrase language 1049) key index PK_Test on Test with stoplist = off;
go
9 июн 14, 11:59    [16141360]     Ответить | Цитировать Сообщить модератору
 Re: Как установить биты в binary?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
invm
fulltext
Какой тонкий троллинг.
9 июн 14, 16:45    [16143979]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить