[SQL] 텍스트, ntext 및 화상 데이터> 유형 비교할 수없는 또는 IS NULL 또는 LIKE> 연산자를 사용하는 경우를 제외하고, 정렬
SQL텍스트, ntext 및 화상 데이터> 유형 비교할 수없는 또는 IS NULL 또는 LIKE> 연산자를 사용하는 경우를 제외하고, 정렬
이메일 테이블 예약에 속하고 우리의 마이크로 소프트 SQL 서버 유형 "텍스트"로 정의
SELECT email,
COUNT(email) AS NumOccurrences
FROM Booking
GROUP BY email
HAVING ( COUNT(email) > 1 )
위의 쿼리를 실행 한 후 (예약에서 중복 이메일을 찾기 위해 노력하고) 이 같은 오류 메시지를 받았습니다 :
나는 마이크로 소프트 SQL을 사용하고 있습니다
해결법
-
==============================
1.SQL Server를 사용하고 있기 때문에, 왜 (100) VARCHAR에 데이터 유형을 변경할 수 없습니다?
SQL Server를 사용하고 있기 때문에, 왜 (100) VARCHAR에 데이터 유형을 변경할 수 없습니다?
ORDER BY 절 또는 SELECT 문의 GROUP BY 절 중 하나를 사용할 때 데이터 유형을 변경하지 않고이 오류를 해결하려면 TEXT 또는 NTEXT 열 필요는 VARCHAR 또는 NVARCHAR로 변환 할 수 있습니다. 에 alittle 비트 지저분 예를 들어,
SELECT CAST(email AS NVARCHAR(100)) email, COUNT(CAST(email AS NVARCHAR(100))) AS NumOccurrences FROM Booking GROUP BY CAST(email AS NVARCHAR(100)) HAVING COUNT(CAST(email AS NVARCHAR(100))) > 1
-
==============================
2.때문에 나는 내 ORM에 문제의 허용 대답에 문제가 있었다. 이 답변하는 경우에만 허용 대답은하지 않습니다 작업에 대한 해결 방법, 당신은 당신이 선택의 열을 포함 할 수 있도록이 필요하기 때문에에 의해 그룹의 열이있는 경우에만 유효합니다.
때문에 나는 내 ORM에 문제의 허용 대답에 문제가 있었다. 이 답변하는 경우에만 허용 대답은하지 않습니다 작업에 대한 해결 방법, 당신은 당신이 선택의 열을 포함 할 수 있도록이 필요하기 때문에에 의해 그룹의 열이있는 경우에만 유효합니다.
그것에 의해 그룹에 요구되지되도록 집합 함수의 열 내부를 캐스팅하고, 오류가 발생하지 않으며 리턴 된 데이터가 여전히 정확해야한다.
MIN(CAST(email AS NVARCHAR(4000))) as email
이상적으로이 해킹을 방지 할 수있는 방법을 찾을 것입니다, 그러나 이것은 어떤 상황에서 유용 할 수 있습니다.
from https://stackoverflow.com/questions/14979413/the-text-ntext-and-image-data-types-cannot-be-compared-or-sorted-except-whe by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 테이블을 기존의 자동 증가 ID를 추가 하시겠습니까? (0) | 2020.04.16 |
---|---|
[SQL] 동일한 SQL 문에 여러 테이블에서 삭제할 수 있습니까? (0) | 2020.04.16 |
[SQL] SQL을 사용하여 입력 한 시간의 합을 계산 (0) | 2020.04.15 |
[SQL] SQL Server의 임시 테이블의 범위 (0) | 2020.04.15 |
[SQL] 쉼표로 구분 된 데이터 열을 조인 (0) | 2020.04.15 |