2016-10-14 4 views
2

mysql 데이터베이스에서 sqlx를 사용 중이고 특정 문자로 시작하는 이름에 대해 author 테이블을 쿼리하려고합니다. 다음은 쿼리입니다 :Go에서 sqlx 쿼리에 와일드 카드를 사용하는 방법?

sqlx.DB.Select(&authors, "SELECT * FROM author WHERE first_name LIKE ?% OR last_name LIKE ?%", letter,letter) 

하지만 당신은 당신의 SQL 구문에 오류가

를 얻을; 올바른 구문은 근처에 '% 또는? % LIKE LAST_NAME'사용

내가 LIKE 쿼리의 예 워드 프로세서에보고했지만 하나를 찾을 수 없습니다를위한 는 MySQL 서버 버전에 해당하는 설명서를 확인 . 그래서이 문제를 어떻게 해결할 수 있을지 궁금해하십니까?

답변

5

당신은 그 I는 다음과 같이 할 것 (MySQL의 매개 변수의 자리가 무엇이든) $2

?, ? 또는 :p1, :p2, $1,되지 않을 것, 거기에 % 있습니다

sqlx.DB.Select(&authors, "SELECT * FROM author WHERE first_name LIKE ? OR last_name LIKE ?", 
    letter+"%",letter+"%") 

와일드 카드 %은 매개 변수 문자열의 일부 여야합니다.

+0

큰 작동합니다. 고맙습니다! – Karlom

1

당신은 SQL 문자열 연결을 사용할 수 있습니다

SELECT * FROM author 
WHERE first_name LIKE ? || '%' OR last_name LIKE ? || '%' 
+0

예. 그러나 SQL은 유연하지 않을 것입니다 (정확한 일치 또는 다른 와일드 카드 패턴을 검색하려고한다고합시다). –

관련 문제