Don Arana
Новичок
CONCAT и регистр?
Привет всем!
Какая-то странная проблема в моем поиске!
Когда использую в запросе CONCAT(поле1, поле2), то начинает придираться к регистру!! А если не использую - например, ищу по одному полю - то не придирается, выводит результаты.
Использую скрипт поиска:
Поле `c` - int(11), `client` - varchar(255).
Никак не возьму в толк.... ((
-~{}~ 29.08.05 13:15:
Изменил тип поля `c` - с `int` на `varchar`, все заработало..
Вот так
Привет всем!
Какая-то странная проблема в моем поиске!
Когда использую в запросе CONCAT(поле1, поле2), то начинает придираться к регистру!! А если не использую - например, ищу по одному полю - то не придирается, выводит результаты.
Использую скрипт поиска:
PHP:
if(isset($_GET['search'])) {
$search = $_GET['search'];
## режем строку
$search = substr($search, 0, 64);
## заменяем символы при ошибке набора
$search = trim(preg_replace('/ ([\w\*]+) (\+|and) ([\w\*]+) /siU', ' +\1 +\3 ', " $search "));
$qu_find = array(
' ', // double spaces to single spaces
'+ ', // replace '+ ' with '+'
'- ', // replace '- ' with '-'
'or ', // remove 'OR '
'and ' // replace 'AND ' with '+'
);
$qu_replace = array(
' ', // double spaces to single spaces
'+', // replace '+ ' with '+'
'-', // replace '- ' with '-'
'', // remove 'OR '
'+' // replace 'AND ' with '+'
);
$search = str_replace($qu_find, $qu_replace, $search);
$search = explode(" ", $search);
// ТАК НЕ ПРИДИРАЕТСЯ, ВЫВОДИТ
$query = db_query("
SELECT
c, client
FROM
orders
WHERE
client LIKE '%" . implode("%' AND client LIKE '%", $search) . "%'
ORDER BY
c
DESC
");
// ТАК ПРИДИРАЕТСЯ, НЕ ВЫВОДИТ
$query = db_query("
SELECT
c, client
FROM
orders
WHERE
CONCAT(c,client) LIKE '%" . implode("%' AND CONCAT(c,client) LIKE '%", $search) . "%'
ORDER BY
c
DESC
");
Никак не возьму в толк.... ((
-~{}~ 29.08.05 13:15:
Изменил тип поля `c` - с `int` на `varchar`, все заработало..
Вот так