допустим, у меня есть строка, в которой слова разделены 1 или более пробелами, и я хочу использовать эту строку и условие SQL LIKE. Как я могу сделать свой SQL и сказать, что он соответствует 1 или более символам пробела в моей строке? Есть ли подстановочный шаблон SQL, который я могу использовать для этого?
Дай мне знать
Если вы просто хотите получить что угодно, по крайней мере, один пробел / пробел, вы можете сделать что-то вроде следующего WHERE myField LIKE '% %'
Если ваш диалект позволяет это сделать, используйте SIMILAR TO, что позволяет использовать более гибкое сопоставление, в том числе нормальные кванторы регулярного выражения '?', '*' И '+', с группировкой, обозначенной '()'
where entry SIMILAR TO 'hello +there'
будет соответствовать 'hello there'
с любым количеством пробелов между двумя словами.
Думаю, в MySQL это
where entry RLIKE 'hello +there'
вы не можете сделать это с помощью LIKE, но что вы можете сделать, если вы знаете, что это условие может существовать в ваших данных, так как вы вставляете данные в таблицу, используйте регулярное выражение, чтобы обнаружить его спереди и установить флаг в другой колонке, созданной для этой цели.
Я просто заменю символы пробелов на «%» . Предположим, я хочу сделать запрос LIKE в строке, подобной этой «Я хочу запросить эту строку с помощью LIKE»
@search_string = 'I want to query this string with a LIKE' @search_string = ("%"+@search_string+"%").tr(" ", "%") @my_query = MyTable.find(:all, :conditions => ['my_column LIKE ?', @search_string])
сначала я добавляю '%' к началу и концу строки с
( "%" + @ SEARCH_STRING + "%")
а затем замените остальные оставшиеся символы пробела на «%», как показано ниже.
.tr ("", "%")
http://www.techonthenet.com/sql/like.php
Шаблоны, которые вы можете выбрать:
% позволяет вам сопоставлять любую строку любой длины (включая нулевую длину)
_ позволяет вам сопоставлять один символ
Другой способ совпадения для одного или более пространства – использовать []
. Это делается так.
LIKE '%[ ]%'
Это будет соответствовать одному или нескольким пробелам.
Я знаю, что это поздно, но я никогда не нашел для этого решения по отношению к вопросу LIKE
.
Невозможно делать то, что вы хотите в SQL LIKE
. Вам нужно будет использовать REGEXP
и [[:space:]]
внутри вашего выражения.
Итак, чтобы найти одно или несколько пробелов между двумя словами ..
WHERE col REGEXP 'firstword[[:space:]]+secondword'