MySQL SELECT… = 'iOS' не возвращает строки, но, как и '%iOS%', - как обрабатывать ведущие пробелы в столбце Varchar? (JSMySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 MySQL SELECT… = 'iOS' не возвращает строки, но, как и '%iOS%', - как обрабатывать ведущие пробелы в столбце Varchar? (JS

Сообщение Anonymous »

У меня есть таблица для хранения планшетов, включая столбец операционной системы: < /p>

Код: Выделить всё

CREATE TABLE `tabletek` (
`id` INT NOT NULL AUTO_INCREMENT,
`kep` VARCHAR(100) NOT NULL,
`gyarto` VARCHAR(100) NOT NULL,
`kepmeret` INT NOT NULL,
`operacios_rendszer` VARCHAR(100) NOT NULL,
`ar` INT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
< /code>
Я загружал данные, как это: < /p>
INSERT INTO `tabletek` (`id`, `kep`, `gyarto`, `kepmeret`, `operacios_rendszer`, `ar`) VALUES
(1, 'tablet1.jpg', 'Samsung', 75, 'android', 240000),
(2, 'tablet2.jpg', 'Apple',   75, '     iOS',   280000),
(3, 'tablet3.jpg', 'Samsung', 75, 'android', 220000);
Обратите внимание, что в строке 2 есть вкладка/пространство перед iOS. Когда я запускаю: < /p>

Код: Выделить всё

SELECT *
FROM tabletek
WHERE operacios_rendszer = 'iOS';
< /code>
Я не получаю результатов. Однако: < /p>
SELECT *
FROM tabletek
WHERE operacios_rendszer LIKE '%iOS%';
< /code>
Правильно возвращает планшет Apple. < /p>
Вот переведенная версия < /p>
У меня есть база данных MySQL для хранения характеристик планшетов. Вот схема и образцы данных, переведенные на английский язык: < /p>
CREATE DATABASE IF NOT EXISTS `tablet` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `tablet`;

CREATE TABLE `tablets` (
`id`               INT         NOT NULL AUTO_INCREMENT,
`image`            VARCHAR(100) NOT NULL,
`manufacturer`     VARCHAR(100) NOT NULL,
`screen_size`      INT         NOT NULL,
`operating_system` VARCHAR(100) NOT NULL,
`price`            INT         NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tablets`
(`image`,       `manufacturer`, `screen_size`, `operating_system`, `price`)
VALUES
('tablet1.jpg', 'Samsung',      75,            'android',          240000),
('tablet2.jpg', 'Apple',        75,            '  iOS',            280000),
('tablet3.jpg', 'Samsung',      75,            'android',          220000);
< /code>
Обратите внимание, что значение hoping_system второй строки имеет два ведущих маточных символа до iOS. < /p>
Когда я запускаю: < /p>
SELECT *
FROM tablets
WHERE operating_system = 'iOS';
< /code>
Я не получаю строки, но: < /p>
SELECT *
FROM tablets
WHERE operating_system LIKE '%iOS%';
Почему сравнение равенства (=) терпит неудачу, когда сохраненное значение имеет ведущие пробелы? TRIM (OPERANGE_SYSTEM), или есть способ, чтобы MySQL автоматически обрезал при сравнении/вставке?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ndle-leadi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «MySql»