SQL-сервер игнорирует регистр в где выражение

Указатели функции. Можно использовать таблицу указателей функции, чтобы реализовать, например, быстро косвенно поточные интерпретаторы кода (Forth) или диспетчеры байт-кода, или моделировать подобные OO виртуальные методы.

Тогда существуют скрытые сокровища в стандартной библиотеке, такие как qsort (), bsearch (), strpbrk (), strcspn () [последние два, являющиеся полезным для реализации strtok () замена].

ошибка А C - то, что арифметическое переполнение со знаком является неопределенным поведением (UB). Таким образом каждый раз, когда Вы видите выражение, такое как x+y, и подписываемый ints, он мог бы потенциально переполнить и вызвать UB.

81
задан ashleedawg 24 September 2018 в 06:45
поделиться

5 ответов

В конфигурации базы данных SQL Server по умолчанию при сравнении строк регистр не учитывается. Если ваша база данных переопределяет этот параметр (за счет использования альтернативного сопоставления), вам необходимо указать, какой вид сопоставления использовать в вашем запросе.

SELECT * FROM myTable WHERE myField = 'sOmeVal' COLLATE SQL_Latin1_General_CP1_CI_AS

Обратите внимание, что приведенное мной сопоставление является лишь примером (хотя оно будет более чем вероятно, функция отлично подходит для вас). Более подробное описание сопоставлений SQL Server можно найти здесь .

127
ответ дан 24 November 2019 в 09:31
поделиться

Обычно при сравнении строк регистр не учитывается. Если ваша база данных настроена на сортировку с учетом регистра, вам необходимо принудительно использовать регистр без учета:

SELECT balance FROM people WHERE email = 'billg@microsoft.com'
  COLLATE SQL_Latin1_General_CP1_CI_AS 
28
ответ дан 24 November 2019 в 09:31
поделиться

Вы можно принудительно регистрировать регистр, преобразовывая в двоичную переменную, например:

SELECT * FROM myTable 
WHERE convert(varbinary, myField) = convert(varbinary, 'sOmeVal')
3
ответ дан 24 November 2019 в 09:31
поделиться

В какой вы базе данных? В MS SQL Server это параметр для всей базы данных, или вы можете переопределить его для каждого запроса с помощью ключевого слова COLLATE.

2
ответ дан 24 November 2019 в 09:31
поделиться

Я нашел другое решение в другом месте, то есть использовать

upper(@yourString)

но все здесь говорят, что в SQL Server это не имеет значения, потому что он все равно игнорирует регистр? Я уверен, что наша база данных чувствительна к регистру.

21
ответ дан 24 November 2019 в 09:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: