Я просто хочу выбрать запрос, где он может выбрать все пользовательские идентификаторы, которые родились после 1986 года.
Я пробовал этот запрос, но он выбирает только соответствующий номер LIKE
поиск.
SELECT uid FROM {profile_values} WHERE value LIKE '%1986%'
Вот SQL-запрос
CREATE TABLE IF NOT EXISTS `profile_values` (
`fid` int(10) unsigned NOT NULL DEFAULT '0',
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`value` text,
PRIMARY KEY (`uid`,`fid`),
KEY `fid` (`fid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `profile_values` (`fid`, `uid`, `value`) VALUES
(5, 1, 'a:3:{s:3:"day";s:2:"27";s:5:"month";s:1:"6";s:4:"year";s:4:"1986";}'),
(5, 3, 'a:3:{s:3:"day";s:2:"15";s:5:"month";s:1:"9";s:4:"year";s:4:"1910";}'),
(5, 4, 'a:3:{s:3:"day";s:2:"26";s:5:"month";s:1:"6";s:4:"year";s:4:"1986";}'),
(5, 5, 'a:3:{s:5:"month";s:1:"4";s:3:"day";s:2:"26";s:4:"year";s:4:"2014";}'),
(5, 6, 'a:3:{s:3:"day";s:2:"26";s:5:"month";s:1:"4";s:4:"year";s:4:"2014";}'),
(5, 7, 'a:3:{s:5:"month";s:1:"4";s:3:"day";s:2:"26";s:4:"year";s:4:"2014";}'),
(5, 8, 'a:3:{s:3:"day";s:2:"26";s:5:"month";s:1:"4";s:4:"year";s:4:"1987";}'),
(5, 17, 'N;'),
(5, 18, 'N;'),
Вы можете попробовать REGEXP. Условие сопоставления REGEXP аналогично LIKE, но LIKE выполняет только простое сопоставление с шаблоном, используя подстановочные знаки «%» и «_», REGEXP выполняет сложное сопоставление с шаблоном регулярного выражения, позволяя ему сопоставлять гораздо больший диапазон строковых шаблонов, чем LIKE.
SELECT uid FROM {profile_values}
WHERE value REGEXP '[1][9][8][6-9]|[1][9][9][0-9]|[2-9][0-9][0-9][0-9]';
Что ж, здесь мы убедились, что наше выражение учитывает только 4-значное число, причем число должно быть больше, чем 1986
so [1][9][8][6-9] -->> makes sure number is between 1986 to 1989
next [1][9][9][0-9] -->> makes sure number is between 1990 to 1999
last [2-9][0-9][0-9][0-9] -->> makes sure number is between 2000 to 9999
пожалуйста, обратитесь http://www.tutorialspoint.com/mysql/mysql-regexps.htm для большего
Других решений пока нет …