Решение-запрос чувствительности к регистру
Иногда, когда мы создаем базу данных, мы не указываем правила корректуры, когда символы корректуры чувствительны к регистру, но при запросе нам нужно учитывать регистр символов, например, нам нужны только строки, начинающиеся с ab. Ничего страшного, mysql предоставляетcollateСинтаксис, просто указав правила проверки utf8_bin.
Здесь есть другой способbinaryКлючевое слово, строка преобразуется в двоичный для сравнения.Поскольку двоичные символы верхнего и нижнего регистра определенно различаются, это можно рассматривать как способ различать регистры.
Последнее, что нужно объяснить, — это взаимосвязь между правилами корректуры и хранением индексов. Поскольку правила сопоставления будут использоваться для сравнения между строками иИндекс основан на относительно упорядоченном порядке, поэтому правила сопоставления будут влиять на порядок индексации записей.。
Где используется чувствительность к регистру?
Примеры компьютерных данных, которые часто, но не всегда, чувствительны к регистру, включают команды, имена пользователей, имена файлов, переменные и пароли.
Например, поскольку пароли Windows чувствительны к регистру, пароль HappyApple $ действует только в том случае, если оно введено таким образом. Вы не можете использовать HAPPYAPPLE $ или даже happyApple $, где просто не замужем письмо неверно. Поскольку каждая буква может быть прописной или строчной, каждая версия пароля, которая использует любой случай, действительно является совершенно другим паролем.
Пароли электронной почты также чувствительны к регистру. Итак, если вы входите в аккаунт Google или Microsoft, вы должны обязательно ввести пароль точно так же, как и при его создании.
Конечно, это не единственные области, где текст можно различить по буквенному случаю. Некоторые программы, предлагающие утилиту поиска, такие как текстовый редактор Notepad ++ и веб-браузер Firefox, имеют возможность запускать зависящие от регистра запросы, так что будут найдены только слова надлежащего случая, введенные в поле поиска. Все это бесплатный инструмент поиска для вашего компьютера, который также поддерживает поиск с учетом регистра.
Когда вы делаете учетную запись пользователя в первый раз или регистрируетесь в этой учетной записи, вы можете найти заметку где-нибудь в поле пароля, в котором явно указано, что пароль чувствителен к регистру, и в этом случае он делает вопрос о том, как вы вводите письма для входа в систему.
Однако, если команда, программа, веб-сайт и т. Д. не различать прописные и строчные буквы, его можно называть без учета регистра или же независимый от случая , но, вероятно, даже не упоминает об этом, если так.
8 ответов
Лучший ответ
Простите за банальный ответ, но так оно и есть
На базовом уровне строки представлены в виде списка символов, где «a» отличается от «A», так что это, вероятно, самое простое представление \ соглашение в целом. В вашем случае, вероятно, будет справедливо сказать, что большинство сравнений нечувствительно к регистру, но я думаю, что другая сторона аргумента верна, по крайней мере, в такой же степени, и соглашение было принято.
Я предполагаю, что использование некоторых вспомогательных методов \ классов немного облегчит вашу боль.
4
cristobalito
13 Дек 2010 в 23:49
Потому что существуют разные виды нечувствительного соответствия, и непонятно, какое из них вам нужно. Вот три наиболее распространенных режима:
У них совершенно разные варианты использования. Вы, вероятно, не заметили этого, потому что ежедневно имеете дело с ASCII. Пользователи из других регионов видят больше различий.
2
usr
26 Июл 2013 в 16:20
Потому что нечувствительность к регистру неэффективна и потому что она работает, даже когда вы этого не собираетесь.
Продавцы должны конкурировать на основе производительности, и по этой причине вариант по умолчанию, как правило, является наиболее эффективным. В лучшем случае нечувствительность к регистру требует сворачивания обеих строк к общему регистру перед сравнением. В худшем случае, в зависимости от локали, потребуется код, который может быть вдвое длиннее. Если поставщик по умолчанию выберет менее производительную версию, конкуренты будут выбирать для сравнения наихудшие сценарии.
Поскольку чувствительность к регистру не работает при определенных поисках, вы вынуждены учитывать это в своем коде. Это заставляет принять сознательное решение. Напротив, нечувствительность к регистру работает даже в тех случаях, когда вы этого не хотите. Вместо того, чтобы заставлять вас принимать решение, он создает сценарий, в котором вы можете пропустить его в ущерб себе. Что касается архитектуры выбора, поставщики обычно выбирают вариант, который приводит к меньшему количеству дефектов — в данном случае это чувствительность к регистру.
1
T.Rob
13 Дек 2010 в 23:58
Сравнение строк в .Net чувствительно к регистру, потому что строки (и отдельные символы) по своей природе чувствительны к регистру.
Символ «a» хранится внутри с другим значением ASCII или Unicode как «A». Сказать, что «а» — это то же самое, что и «А», не «правильно».
Это различие становится критическим при сравнении значений на языках, отличных от английского, при использовании таких алгоритмов, как хэш-таблицы, или при использовании множества алгоритмов шифрования / дешифрования.
Мои два цента: сравнение с учетом регистра по умолчанию, потому что это правильно.
1
Bob Black
14 Дек 2010 в 00:50
В VB.NET можно установить параметр «сравнить» для текста, чтобы он работал без учета регистра, но я настоятельно не рекомендую это делать. Я предпочитаю просто использовать метод string.toLower (), когда мне нужно нечувствительно сравнить и прочитать текст в нижнем регистре.
Почему? Потому что как еще вы могли бы сравнивать, когда чувствительность к регистру имеет значение, как это было бы в некоторых приложениях?
tekiegreg
13 Дек 2010 в 23:49
Вы не можете изменить поведение существующих классов. Класс , который определен в mscorelib / system.core, переопределяет == и определяет равенство с учетом регистра.
Все, что вы можете сделать, это добавить к строке метод расширения и реализовать регистронезависимый:
Aliostad
14 Дек 2010 в 00:00
Ваш регистр не обязательно является наиболее распространенным случаем, очень распространенным случаем является сопоставление слов в документе с грамматическими условиями, в этом случае чувствительность к регистру является абсолютной необходимостью.
Сопоставление заметок в нечувствительном к регистру способе тривиально просто. Фактически, метод equals строки имеет перегрузку, специально предназначенную для указания способа сравнения.
Tim Jarvis
14 Дек 2010 в 00:01
Я знаю, что это некропостинг, но
Я пришел сюда в поисках решения той же проблемы. Сейчас прошло почти 5 лет … но я не возражаю, так как это один из первых результатов поиска, и я думаю, что было бы лучше включить правильную информацию.
Если вы добавите указанную выше строку в начало вашего ядра, вы сообщаете CLR о переключении со значения по умолчанию () на сравнение без учета регистра.
Я не знаю, может ли это работать на C #.
beppe9000
23 Июн 2015 в 08:54
Поле решения чувствительно к регистру
BINARY и COLLATE
Контроль в mysqlЧувствительность к регистру имен баз данных и таблицПо параметруlower_case_table_namesконтроль,Когда он равен 0, это означает, что регистр учитывается, когда он равен 1, это означает, что имя преобразуется в нижний регистр и сохраняется без учета регистра.Имена полей обычно не чувствительны к регистру, а как насчет значений полей?Случай значений полей контролируется правилами сортировки mysql. Когда дело доходит до правил корректуры, нужно говорить о наборах символов.Набор символов — это набор символов и кодов, а правило сопоставления — это набор правил для сравнения символов в наборе символов., Например, правило, определяющее отношение ‘A’ <‘B’. Существует множество правил сопоставления для разных наборов символов. Вообще говоря, правила сопоставления начинаются с имени связанного набора символов, обычно включая имя языка, и начинаются с(Нечувствительный к регистру),(С учетом регистра) или(Двойной) Конец.
Например, набор символов utf8,, Означает регистр без учета регистра, этоПравила сопоставления по умолчанию для набора символов utf8;Указывает на чувствительность к регистру,Представляет двоичное сравнение, которое также чувствительно к регистру.
Правила проверки передают ключевые словаcollateЗадайте, например, создать базу данных d1, указать набор символов как utf8 и правило сопоставления как utf8_bin
Приведенный выше оператор показывает, что данные в базе данных d1 закодированы в utf8 и чувствительны к регистру.
Как сделать регистр первичного ключа MySQL чувствительным?
Запросы MySQL по умолчанию не чувствительны к регистру, и первичный ключ также нечувствителен к регистру. Если вам нужно различать, вы должны использоватьBinaryОтметьте конфиденциальные атрибуты.
Следующее взято из официальной документации MySQL 5.7.10.1.10.8 The Binary Character Set
10.1.10.8 The Binary Character Set
The character set is the chararcter set of binary strings, which are sequences of bytes. The character set has one collation, also named . Comparison and sorting are based on numeric byte values. The effect is that lettercase and accent differences are significant in comparisons. That is, the collation is case-sensitive and accent sensitive. (Другими словами, правило двоичной сортировки чувствительно к регистру и акценту.)
For information about the differences between the collation of the character set and the collations of nonbinary character sets, see Section 10.1.8.5, “The binary Collation Compared to _bin Collations”.
To convert a string expression to a binary string, any of these constructs are equivalent:
If is a character string literal, the introducer may be used to designate it as a binary string. For example:
The introducer is permitted for hexadecimal literals and bit-value literals as well, but unnecessary; such literals are binary strings by default.
SQL Учебник
SQL ГлавнаяSQL ВведениеSQL СинтаксисSQL SELECTSQL SELECT DISTINCTSQL WHERESQL AND, OR, NOTSQL ORDER BYSQL INSERT INTOSQL Значение NullSQL Инструкция UPDATESQL Инструкция DELETESQL SELECT TOPSQL MIN() и MAX()SQL COUNT(), AVG() и …SQL Оператор LIKESQL ПодстановочныйSQL Оператор INSQL Оператор BETWEENSQL ПсевдонимыSQL JOINSQL JOIN ВнутриSQL JOIN СлеваSQL JOIN СправаSQL JOIN ПолноеSQL JOIN СамSQL Оператор UNIONSQL GROUP BYSQL HAVINGSQL Оператор ExistsSQL Операторы Any, AllSQL SELECT INTOSQL INSERT INTO SELECTSQL Инструкция CASESQL Функции NULLSQL ХранимаяSQL Комментарии
8 ответов
Если вы соответствуете полному значению поля, используйте
РЕДАКТИРОВАТЬ: Из вашего комментария вы хотите использовать:
56
2009-05-16 03:07
Вы можете использовать ключевое слово UPPER:
22
2009-05-16 03:08
Ты можешь использовать:
В противном случае вы можете использовать:
Что будет более эффективно, если вы ищете совпадение без дополнительных символов до или после поля your_column, как предложил Гари Рэй в своих комментариях.
12
2009-05-16 03:08
Перед сравнением двух или более строк сначала выполните следующие команды
после выполнения этих двух операторов вы можете сравнить строки, и будет учитываться регистр. Например, у вас было две строки s1=’Apple’ и s2=’apple’, если вы хотите сравнить две строки перед выполнением вышеуказанных операторов, то эти две строки будут рассматриваться как две разные строки, но когда вы сравниваете строки после выполнения двух операторов alter, эти две строки s1 и s2 будут рассматриваться как одна и та же строка
причины использования этих двух утверждений
Нам нужно установить NLS_COMP=LINGUISTIC и NLS_SORT=BINARY_CI, чтобы использовать 10gR2 нечувствительность к регистру. Поскольку они могут быть изменены в сеансе, это не так просто, как установить их в параметрах инициализации. Мы можем установить их в параметрах инициализации, но тогда они влияют только на сервер, а не на клиентскую сторону.
6
2014-07-25 06:12
Более подробно об ответе мистера Дределя и комментарии Туинстоуля. Данные в столбце будут храниться в своем конкретном случае, но вы можете изменить чувствительность к регистру сеанса для сопоставления.
Вы можете изменить сеанс или базу данных, чтобы использовать лингвистический или регистрозависимый поиск. Вы также можете настроить индексы для использования определенных порядков сортировки.
например
Как только вы начинаете изучать неанглийские языки с акцентами и так далее, появляется дополнительная поддержка нечувствительного к акценту. Некоторые возможности зависят от версии, поэтому ознакомьтесь с документом Globablization для вашей конкретной версии Oracle. Последний (11 г) здесь
2
2009-05-17 22:42
ВЫБЕРИТЕ STRCMP(«строка1», «строка2»);
это возвращает 0, если строки равны.
- Если строка1 = строка2, эта функция возвращает 0 (без учета регистра)
- Если строка1
- Если строка1 > строка2, эта функция возвращает 1
1
2020-10-20 15:06
Я не помню точный синтаксис, но вы можете установить столбец таблицы без учета регистра. Но будьте осторожны, потому что тогда вы больше не сможете совпадать, основываясь на случае, и если вы ХОТИТЕ «круто» не соответствовать «CoOl», это больше не будет возможно.
2009-05-16 03:27
Чтобы избежать сравнения преобразований строк, используйте .
ПРИМЕР:
Это вернет любые имена пользователей, будь то ANGEL, angel или Angel и т. Д.
2021-02-17 21:53
Безопасность позади чувствительных к регистру паролей
Пароль, который должен быть введен с соответствующими буквами, намного безопаснее, чем тот, который этого не делает, поэтому самый учетные записи пользователей чувствительны к регистру.
Используя приведенный выше пример, вы можете видеть, что даже эти два неверных пароли предоставляют три общих пароля, которые кто-то должен был угадать, чтобы получить доступ к учетной записи Windows. Кроме того, поскольку этот сильный пароль имеет специальный символ и несколько букв, все из которых могут быть прописными или строчными, поиск правильной комбинации не будет быстрым или легким.
Представьте себе что-то более простое, хотя, как и пароль ГЛАВНАЯ, Кому-то придется попробовать все комбинации этого пароля, чтобы приземлиться на слово со всеми заглавными буквами. Им придется попробовать HOMe, HOme, Home, home, hoMe, HoMe, hOme, и т. д. — вы получаете идею. Если этот пароль был случайным нечувствительный , тем не менее, каждая из этих попыток будет работать, плюс, простая атака по словарю будет довольно легко достигать этого пароля, как только слово Главная был судим.
С каждой дополнительной буквой, добавленной к паролю, чувствительным к регистру, вероятность того, что его можно угадать в течение разумного промежутка времени, резко сокращается, а безопасность усиливается еще больше, когда включены специальные символы.
SQL Справочник
SQL Ключевые слова
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE
MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION
SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME
MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric
SQL ОператорыSQL Типы данныхSQL Краткий справочник
7 ответов
30
Использовать значение по умолчанию (без учета регистра), если вы оба не знаете, что делаете, и b) вам абсолютно необходимо. Существует несколько программ (Norton Antivirus), которые не будут работать должным образом в файловой системе, чувствительной к регистру.
HFS по умолчанию нечувствителен к регистру, но сохраняет регистр (т. е
ему не важно, что вы вводите для целей сравнения, но он будет помнить, что вы вводите)
6
5
Есть хорошая причина для выбора файловой системы, чувствительной к регистру.
Если вас беспокоит качество и безопасность приложений, которые вы запускаете, вас может заинтересовать любой ранний механизм, который может различать плохо запрограммированные приложения.
Приложение, которое в свое время создало файл с именем и позже
попробуйте открыть тот же файл с именем на
наименее плохо написано. Это просто плохая практика программирования.
Такое приложение заполнено уязвимостями с тем же
средняя вероятность на всю длину кода. Это опасное приложение.
Это опасное приложение, скорее всего, произойдет сбой в файловой системе с чувствительностью к регистру .
Это опасное приложение не будет разбиваться на файловую систему без учета регистра .
(Некоторые приложения будут сбой на обоих,
но мы не очень мотивированы, чтобы разобраться в них.)
Следовательно, файловая система с чувствительностью к регистру может считаться хорошим инструментом для раннего обнаружения и блокировки плохо программируемых приложений.
С другой стороны, этот уровень контроля качества программирования далеко не достаточен, чтобы убедиться, что у вас нет другой уязвимости.
4
Есть несколько важных приложений, которые не будут работать корректно с учетом регистра. И нет причин для этого. Я предполагаю, что вы спрашиваете, что у вас действительно нет причин для этого. Вам определенно лучше не делать этого, если у вас нет конкретной причины, и мне все равно, что многие приложения не работают с ним.
3
Одной из веских причин использования файловой системы, чувствительной к регистру, является использование репозиториев git. Синхронизация их с репо вызывает проблемы снова и снова, если не использовать случай.
Но я предлагаю добавить другой раздел, используя HFS + форматированный регистр для такого приложения, и связать каталоги, необходимые для этого раздела. Мой системный раздел по-прежнему нечувствителен к регистру не потому, что я знаю почему, а только потому, что я боюсь.
1
Программы Adobe печально известны тем, что они не работают с файловыми системами, чувствительными к регистру. Adobe говорит:
Пароли нельзя устанавливать и в файловых системах, чувствительных к регистру.
Приложения Adobe Creative Cloud не будут работать в чувствительной к регистру системе и могут быть серьезной проблемой.