2014-04-04 6 views
0

이 테이블의 17000+ 레코드를 검색 할 때 어떤 전자 메일 주소를 사용하더라도 "MySQL은 빈 결과 집합 (예 : 0 행)을 반환했습니다."모든 관찰 된 값에 대해 mySQL simple SELECT가 실패했습니다.

조인을 시도 할 때이 문제점을 발견했습니다.

SELECT * FROM `actives` WHERE TRIM(`email`) = '[email protected]'; 

사람이 설명 할 수있는 문제를 제안 할 수 있습니다 : 스키마

CREATE TABLE `actives` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `person` int(11) NOT NULL, 
    `email` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `email` (`email`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

예 쿼리입니까?

mysql> SELECT `email` FROM `actives` WHERE TRIM(`email`) = TRIM('[email protected]'); 
Empty set (0.45 sec) 

SELECT `email` FROM `actives` WHERE `email` RLIKE '[email protected]'; 
+-----------------------------+ 
| email      | 
+-----------------------------+ 
|[email protected] 
+-----------------------------+ 

또한이 0 행이 mysqldump를 출력에 추가 요청에 따라

UPDATE `actives` SET `email` = TRIM(`email`) 

영향을 가져옵니다 나는 이러한 시도 코멘트 당

SELECT `email` FROM `actives` LIMIT 0, 30 

으로 테이블을 탐색 할 때 나는 값을 볼 수 있습니다 이메일 주소 끝에 카라 기 리턴 캐릭터 ...

-- MySQL dump 10.13 Distrib 5.5.28, for FreeBSD9.1 (i386) 
-- 
-- Host: localhost Database: foo 
-- ------------------------------------------------------ 
-- Server version  5.5.28-log 

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 

-- 
-- Table structure for table `actives` 
-- 

DROP TABLE IF EXISTS `actives`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `actives` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `person` int(11) NOT NULL, 
    `email` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `email` (`email`) 
) ENGINE=InnoDB AUTO_INCREMENT=310410 DEFAULT CHARSET=latin1 COMMENT='delete this, useless now'; 
/*!40101 SET character_set_client = @saved_cs_client */; 

-- 
-- Dumping data for table `actives` 
-- 
-- WHERE: true limit 1 

LOCK TABLES `actives` WRITE; 
/*!40000 ALTER TABLE `actives` DISABLE KEYS */; 
INSERT INTO `actives` VALUES (1,0,'[email protected]\r'); 
/*!40000 ALTER TABLE `actives` ENABLE KEYS */; 
UNLOCK TABLES; 
/*!40103 SET [email protected]_TIME_ZONE */; 

/*!40101 SET [email protected]_SQL_MODE */; 
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */; 
/*!40014 SET [email protected]_UNIQUE_CHECKS */; 
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
/*!40101 SET [email protected]_COLLATION_CONNECTION */; 
/*!40111 SET [email protected]_SQL_NOTES */; 

-- Dump completed on 2014-04-04 10:32:07 
+2

100 % 묻는 여기에이 성공적으로 바이올린, 그것은 프론트 엔드입니다. 당신은'SELECT * FROM actives WHITE TRIM (email) = TRIM ('[email protected]');을 시도해 보았습니다. 보이지 않는 문자 또한 클립 보드에 있습니다 (복사 & 붙여 넣기 이후). 커맨드 라인 클라이언트를 사용해 보셨습니까? – fancyPants

+0

답장을 보내 주셔서 감사합니다. 나는 당신이 옳았다 고 확신하지만 계속 진행하는 방법을 확신 할 수 없다. 지금 게시 할 예제를 추가했습니다. 둘 다에 TRIM() 사용은 아무 결과도 얻지 않으며 그러나 도메인 및 전체 주소에 전자 우편 RLIKE는 결과를 얻는다. 그러나 TRIM()을 사용하여 테이블을 업데이트해도 행이 변경되지 않습니다. – jerrygarciuh

+0

새로 추가 된 쿼리는 명령 줄에서 발생했습니다. – jerrygarciuh

답변

1

.

사람들을 제거하는 또 다른 방법

UPDATE actives SET email = TRIM(BOTH '\r\n' FROM email); 

가보고 here을 가지고 사용하는 것입니다.

+0

시간 내 주셔서 감사합니다 !! mySQL 모니터가 반환 값을 표시하지 않지만 mysqldump는 깨닫지 못했습니다! 큰 도움이 앞으로! – jerrygarciuh

+0

와우! 트림은 내가 깨달은 것보다 훨씬 다목적이고 강력합니다! 나는 보통 그것을 공백 청소에 사용한다. 감사! – jerrygarciuh

+0

저는 3 번 페이지로 돌아와 답변을 다시 확인해야했습니다. 이상하게 행동합니다. – jerrygarciuh

2

나는 문제가 이메일 끝에 '/ r'이라고 생각한다. 사용해보기 :

SELECT `email` FROM `actives` WHERE `email` LIKE '[email protected]%'; 

희망이 있습니다.

당신은 캐리지 리턴과 줄 바꿈을 포함하여 열에 저장된 정확하게 볼 수 mysqldump를 사용할 수 있습니다 위의 댓글에서

+0

생각이 없으면, 당신은 그것이 진짜 올바른지. +1. – Rahul

관련 문제