Различные способы запроса строк? - PullRequest
0 голосов
/ 26 июля 2010

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

Какие из них возможны в MySQL?.. и как мне их выполнить?

  1. Результаты, которые содержат эту точную строку - без учета регистра

  2. Результаты, которые содержат эту точную строку - с учетом регистра

  3. Результаты, которые содержат аналогичную строку - без учета регистра

  4. Результаты, которые содержат аналогичную строку - но отдельные символы должны иметь одинаковый регистр

Ответы [ 2 ]

3 голосов
/ 26 июля 2010

1. Результаты, содержащие эту точную строку - без учета регистра

2. Результаты, содержащие эту точную строку, чувствительны к регистру

Оба могут быть выполнены. См. Страницу, документирующую строковые функции в MySQL, в частности INSTR.

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

ALTER TABLE MyTable ADD MyColumn VARCHAR(10) CHARACTER SET ascii COLLATE ascii_general_cs NOT NULL

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

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

3. Результаты, содержащие похожую строку - без учета регистра

4. Результаты, содержащие одинаковую строку - но отдельные символы должны быть в одном и том же регистре

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

1 голос
/ 26 июля 2010
  1. SELECT this FROM that WHERE LOWER(string) = LOWER("blablabla");
  2. SELECT this FROM that WHERE string = "blablabla";
  3. SELECT this FROM that WHERE LOWER(string) LIKE LOWER("blablabla");
  4. SELECT this FROM that WHERE string LIKE "blablabla";

Надеюсь, это правильно.

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