[SQL] 어떻게 MySQL의 LIKE 절에서 사용자 변수를 사용하는 방법?
SQL어떻게 MySQL의 LIKE 절에서 사용자 변수를 사용하는 방법?
좀 단기 DB 관리에 도움이 설정에 몇 가지 간단한 SQL 스크립트를 시도하고있다. 따라서, 나는 쉽게 스크립트를 재사용 할 수 있도록 노력 변수를 설정하고있다.
내가 데 문제는 LIKE 절을 구체적이다.
SET @email = 'test@test.com';
SELECT email from `user` WHERE email LIKE '%@email%';
내가 갖고 싶어 그래서 그것은 변수의 이메일 SET를 기반으로 결과를 발견. 내가 수동으로 LIKE 절에 이메일 주소를 입력하면 쿼리가 작동합니다.
어떻게 사용자 변수 작업에 LIKE 절을받을 수 있나요?
최신 정보: @ DEMS의 대답은이 간단한 경우 작동,하지만 난 더 복잡한 쿼리에 문제가 있어요.
SET @email = 'test@test.com';
SELECT project.projectno, project.projectname, login.username,
CONCAT(login.firstname, ' ', login.lastname), projectuser.title
FROM projectuser
INNER JOIN login ON projectuser.uid = login.uid
LEFT JOIN project ON projectuser.pid = project.pid
WHERE login.username LIKE CONCAT ('%', @email, '%')
나에게 오류를 제공합니다 "기능 mydb.CONCAT가 존재하지 않습니다"
CONCAT 연없이 쿼리 작업 () :
SET @email = 'test@test.com';
SELECT project.projectno, project.projectname, login.username,
CONCAT(login.firstname, ' ', login.lastname), projectuser.title
FROM projectuser
INNER JOIN login ON projectuser.uid = login.uid
LEFT JOIN project ON projectuser.pid = project.pid
WHERE login.username LIKE @email
해결법
-
==============================
1.
SET @email = 'test@test.com'; SELECT email from `user` WHERE email LIKE CONCAT('%', @email, '%');
-
==============================
2.) (CONCAT없이 작동 :
) (CONCAT없이 작동 :
LIKE '%{$var}%'
(MySQL 버전 5 +)
-
==============================
3.+ 변수 + '%', '%'CONCAT 바로 사용할 필요가 없습니다 :
+ 변수 + '%', '%'CONCAT 바로 사용할 필요가 없습니다 :
SET @email = 'test@test.com'; SELECT email from `user` WHERE email LIKE '%' + @email + '%';
-
==============================
4.오라클이 작동하는 것 같다과 동일한 구문을 사용하여 :
오라클이 작동하는 것 같다과 동일한 구문을 사용하여 :
LIKE '%'|| 이메일 사용자로부터 SELECT 이메일 @ 이메일 || '%';
-
==============================
5.당신은 오류가있을 수 있습니다
당신은 오류가있을 수 있습니다
Error Code: 1267. Illegal mix of collations for operation 'like' 0.016 sec
같은 테이블에 사용이 경우 동일한 데이터 정렬을 지정해야합니다 :
SET @email = 'test@test.com' COLLATE utf8_unicode_ci;
-
==============================
6.나는 문 LIKE 사용하기 전에 CONCAT 함수를 사용하여 해결 :
나는 문 LIKE 사용하기 전에 CONCAT 함수를 사용하여 해결 :
SET @email = 'test@test.com'; set @email = CONCAT('%',@email,'%'); SELECT email from `user` WHERE email LIKE @email;
그것은 나를 위해 잘 작동합니다
-
==============================
7.
BEGIN SET @emailid = CONCAT('%', 'email@email.com' ,'%'); SET @t1 =CONCAT('SELECT * FROM user WHERE email LIKE ''', @emailid, ''''); PREPARE stmt3 FROM @t1; EXECUTE stmt3; DEALLOCATE PREPARE stmt3; END
from https://stackoverflow.com/questions/8537516/how-to-use-an-user-variables-in-mysql-like-clause by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 더 - 탑 1 대 MAX? (0) | 2020.06.07 |
---|---|
[SQL] 오라클 SQL은 어떻게 날짜에서 시간을 제거하는 (0) | 2020.06.07 |
[SQL] 왜 VARCHAR 필요 길이 사양을합니까? (0) | 2020.06.07 |
[SQL] 한계를 사용하여 JPA 2 CriteriaQuery, (0) | 2020.06.07 |
[SQL] Linq에로 변환 SQL은 널 (null)에 가입 왼쪽 (0) | 2020.06.07 |