My case is below.Mysql very special Нравится мне
У меня есть записи в таблице mysql в столбце «productname».
Adults-Work-Blue-Green-Pink-Ghagra-Choli-Dupatta
Afro-Party-Retro-Wigs-Hair-Black-Curly-Gabbar
Теперь я хочу, чтобы найти запись, которая начинается с А, а затем после того, как первый дефис W.
Если я пишу запрос, как показано ниже,
select DISTINCT Item_Code, Item_Name
from tbl_stock_detail
where Item_Name like 'A%-W%'
Он показывает мне обе записи. Я хочу видеть только первую запись здесь, как после A, W - первое письмо после Hyphen. Аналогично Если я делаю это как «A% -W% -B%», я хочу, чтобы он показывал только первую запись, как после «A», «W» - первая буква после первого дефиса, а «B» - первая буква после второй дефис. Просто помните, что есть 1000 записей с множеством имен, поэтому мы не можем проверить длину строки.
Можно ли написать такой запрос в mysql, который также проверяет последовательность?
Извините, что я плохо в Regex. Это может быть возможно с регулярным выражением.
Просьба сообщить.
Edited Вопрос ниже:
У меня есть запись, как эта «длинная юбка красных блесток Tīkli танец» Теперь клиент говорит, что он хочет, чтобы искать на основе этих 3-х символов только R: Красных T: Tīkli S: Юбка
Также вторая вещь plz. Если у юбки и красного есть 2 пробела вместо 1, наше старое регулярное выражение не работает. Но он должен работать, поскольку они ошибочно добавили несколько пробелов между двумя словами. вы можете помочь мне выполнить эти 2 требования?
Подробнее Редактирование:
Это работает статичное, но это дает мне некоторые проблемы последовательности бежать в PHP. Ниже приведен мой php-код,
<?php
$var = 'SRT';
for($i=0;$i<strlen($var);$i++)
{
$term = '^'.$var[$i].'|[- ]'.$var[$i];
if($i == 0)
$subquery0 .= " where Item_Name REGEXP '".$term."'";
else
$subquery0 .= " or Item_Name REGEXP '".$term."'";
}
?>
Когда я повторяю $ term, он показывает только «^ S». Но если я удаляю | символ, то он показывает полную строку. Может быть, символ трубы нуждается в escape-последовательности. Я попробовал его как «// |» но он не работает. Любая идея об этом или мне нужно открыть новый вопрос, так как это вопрос PHP?
'Item_Name REGEXP 'A [^ -] + - W. *'' Должен работать. – hjpotter92
@ hjptter92: Я думаю, что в регулярном выражении должна быть ведущая каретка. ** ''^A'' **, чтобы соответствовать началу строки, поскольку спецификация «начинается с A», остальная часть регулярного выражения выглядит идеально. – spencer7593
Спасибо, hjptter92 за помощь. – Vivek