Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL LIKE 절에서 사용자 변수를 사용하는 방법은 무엇입니까?


CONCAT() 함수를 사용하여 LIKE 절에서 사용자 변수로 작업할 수 있습니다. 구문은 다음과 같습니다.

set @anyVariableName='anyValue';
select yourColumnName1,yourColumnName2,yourColumnName3,...N from yourTableName
whereyourColumnName like CONCAT('%', @anyVariableName, '%');

위의 구문을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table UserVariableInLike
-> (
-> id int,
-> Name varchar(100),
-> Age int
-> );
Query OK, 0 rows affected (0.83 sec)

insert 명령을 사용하여 테이블에 레코드를 삽입합니다. 쿼리는 다음과 같습니다.

mysql> insert into UserVariableInLike values(101,'John',23);
Query OK, 1 row affected (0.23 sec)

mysql> insert into UserVariableInLike values(102,'John Smith',24);
Query OK, 1 row affected (0.20 sec)

mysql> insert into UserVariableInLike values(103,'Carol Smith',23);
Query OK, 1 row affected (0.15 sec)

mysql> insert into UserVariableInLike values(104,'Johnson',25);
Query OK, 1 row affected (0.20 sec)

mysql> insert into UserVariableInLike values(105,'Adam Smith',26);
Query OK, 1 row affected (0.21 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다

mysql> select *from UserVariableInLike;

다음은 출력입니다.

+------+-------------+------+
| id   | Name        | Age  |
+------+-------------+------+
| 101  | John        | 23   |
| 102  | John Smith  | 24   |
| 103  | Carol Smith | 23   |
| 104  | Johnson     | 25   |
| 105  | Adam Smith  | 26   |
+------+-------------+------+
5 rows in set (0.00 sec)

LIKE 절에서 사용자 변수를 사용하는 쿼리는 다음과 같습니다. 쿼리는 다음과 같습니다 -

mysql> set @searchName='John';
Query OK, 0 rows affected (0.00 sec)

mysql> select id,Name,Age from UserVariableInLike where Name like CONCAT('%',
@searchName, '%');

다음은 출력입니다.

+------+------------+------+
| id   | Name       | Age  |
+------+------------+------+
| 101  | John       | 23   |
| 102  | JohnSmith  | 24   |
| 104  | Johnson    | 25   |
+------+------------+------+
3 rows in set (0.05 sec)