Насколько портативный кастинг-1 к неподписанному типу?

От SQL Server Books Online:

Для записи полнотекстовых запросов в Microsoft SQL Server 2005 необходимо изучить, как использовать СОДЕРЖАНИЕ и предикаты Transact-SQL FREETEXT, и CONTAINSTABLE и функции со знаком набора строк FREETEXTTABLE.

, Который означает, все запросы, записанные выше с % и _, не являются допустимыми полнотекстовыми запросами.

Вот образец того, на что запрос похож при вызывании функции CONTAINSTABLE.

ИЗБРАННЫЙ РАЗРЯД, * ОТ TableName, CONTAINSTABLE (TableName, *, '"*WildCard"') searchTable, ГДЕ [КЛЮЧ] = ORDER BY TableName.pk searchTable. DESC

РАЗРЯДА Для CONTAINSTABLE функционирует, чтобы знать, что я использую подстановочный поиск, я должен обернуть его в двойные кавычки. Я могу использовать подстановочный символ * вначале или окончание. Существует много других вещей, которые можно сделать при создании строки поиска для функции CONTAINSTABLE. Можно искать слово около другого слова, искать флективные слова (диск = диски, управлял, управление, и управляемый), и поиск синонима другого слова (металл может иметь синонимы, такие как алюминий и сталь).

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

[Обновление]

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

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

Example:  "*ildcar" will look for a single word as long as it ends with "ildcar".

Example:  "*ildcar*" will look for a single word with "ildcar" in the middle, which means it will match "wildcard".  [Just noticed that Markdown removed the wildcard characters from the beginning and ending of my quoted string here.]

[Обновление № 2]

Dave Ward - Используя подстановочный знак с одной из функций не должен быть огромным хитом перфекта. Если я создал строку поиска только с "*", она не возвратит все строки в моем тестовом сценарии, она возвратила 0 записей.

11
задан Pillsy 3 November 2009 в 15:17
поделиться

4 ответа

The requirements on unsigned arithmetic guarantee that casting -1 to an unsigned type will produce the largest number possible for the target type. C99, §6.2.5/9: "...a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type."

This is the same in C and C++ (in the C++ standard, similar wording is found in footnote 41 -- it's not normative, but it's explaining other wording that is).

20
ответ дан 3 December 2019 в 01:24
поделиться

To be on a "safe" side and do it "right" (C++) way, worth looking at STL:

std::numeric_limits<size_t>::max()
14
ответ дан 3 December 2019 в 01:24
поделиться

If you're looking to get the maximum (or minimum) value of a certain type in a portable way, it is best to use the standard numeric_limits class as follows.

#include <limits>

size_type max = std::numeric_limits<size_type>::max()
size_type min = std::numeric_limits<size_type>::min()

I suspect that some implementations of these functions may use the cast you describe as the platform-optimal way to get at the min/max.

2
ответ дан 3 December 2019 в 01:24
поделиться

«Насколько я понимаю, это работает, исходя из того факта, что представление -1 в арифметике с дополнением до двух - это ...».

Нет, это вообще не основано на этом факте. Он основан на стандартном требовании, согласно которому одиночные значения, преобразованные в N-битный беззнаковый тип, должны давать беззнаковое значение, которое «равно» исходной подписанной единице по модулю 2 ^ N.

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

5
ответ дан 3 December 2019 в 01:24
поделиться