Home  >  Article  >  Backend Development  >  How to implement fuzzy query in PHP

How to implement fuzzy query in PHP

墨辰丷
墨辰丷Original
2018-06-01 11:50:572825browse

This article mainly introduces the method of implementing fuzzy query in PHP. Interested friends can refer to it. I hope it will be helpful to everyone.

Pattern query

1. SQL matching pattern

2. Regular expression matching pattern (generally not recommended)

SQL matching mode

1. When using sql matching mode, you cannot use the operator = or! =, instead use the operator LIKE or NOT LIKE;

2. Using sql matching mode, MYSQL provides 2 wildcard characters.

% represents any number of any characters (including 0)

_ represents any single character

3. Use the sql matching pattern, if the matching format does not contain the above The query effect of any one of the two wildcard characters is equivalent to = or! =

4. Use sql matching mode. When matching, it is not case-sensitive

#查询用户名以某个字符开头的用户
#查询用户名以字符'l'开头的用户: l%
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名以某个字符结尾的用户
#查询用户名以字符'e'结尾的用户:e%
SELECT * FROM user WHERE username LIKE 'e%';
#查询用户名包含某个字符的用户
#查询用户名包含字符'o'的用户:%o%
SELECT * FROM user WHERE username LIKE '%o%';
#查询包含三个字符的用户
SELECT * FROM user WHERE username LIKE '___';
#查询用户名第二个字符为o的用户:_o%
SELECT * FROM user WHERE username LIKE '_o%';

Regular Expression matching pattern

Wildcard (regular expression)

. Matches any single character

* Matches 0 or more in front of it The characters

x* means matching any number of x characters

[..] Matches any character in brackets
[abc] Matches the characters ab or c
[a-z] Matches any letter
[0-9] Matches any number
[0-9]* Matches any number of any number
[a-z]* Matches any number of letters

^ represents Starts with a certain character or string

^a means it starts with the letter a

$It means ends with a certain character or string

s$ means it ends with the letter s

The operators used to use regular expression matching patterns are:

REGEXP or NOT REGEXP (RLIKE or NOT RLIKE)

Note: Regular expression matching patterns, their regular expressions If the formula appears at any position in the matching field,

The pattern will be matched, and there is no need to put a wildcard character on both sides to make it match;

If only the wildcard character . is used to match, assume N , then its matching pattern indicates that it is greater than or equal to N;

How to understand the above sentence?

That is to say

... Match data that is greater than or equal to 3 characters
.... Match data that is greater than or equal to 4 characters
#Query the user name with the character l Users starting with: ^l;
#regular expression writing

SELECT * FROM user WHERE username REGEXP '^l';
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名正好是三个字符的用户:^...$;
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE '___';
#正则表达式写法
SELECT * FROM user WHERE username REGEXP '^...$';

Summary: The above is the entire content of this article, I hope it can be helpful to everyone Learning helps.

Related recommendations:

php Detailed explanation and examples of array processing function extract

php in_array() Detailed explanation of checking whether a certain value exists in the array

Solution to the problem that PHP magento background cannot log in

The above is the detailed content of How to implement fuzzy query in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn