SQL Server "텍스트" 데이터 유형의 WHERE 절
여기서 [CastleType]은 SQL Server에서 데이터 유형 "text"로 설정되며 쿼리는 다음과 같습니다.
SELECT *
FROM [Village]
WHERE [CastleType] = 'foo'
다음과 같은 에러가 표시됩니다.
TEXT 및 VARCHAR 데이터 유형은 연산자와 동일하지 않습니다.
WHERE 절을 사용하여 이 데이터 유형을 쿼리할 수 없습니까?
사용할 수 있습니다.LIKE
대신=
와일드카드가 없어도 같은 효과가 있습니다.
DECLARE @Village TABLE
(CastleType TEXT)
INSERT INTO @Village
VALUES
(
'foo'
)
SELECT *
FROM @Village
WHERE [CastleType] LIKE 'foo'
text
는 권장되지 않습니다.로의 변경varchar(max)
같이 일하기가 더 쉬울 거예요.
또한 데이터 크기가 얼마나 될 것 같습니까?동등 비교를 수행하려는 경우 이 열을 색인화하는 것이 이상적입니다.열을 900바이트보다 넓은 값으로 선언하는 경우 계산 값을 추가할 수 있지만 이 작업은 불가능합니다.checksum
또는hash
이 유형의 쿼리 속도를 높이는 데 사용할 수 있는 열입니다.
이거 드셔보세요
SELECT *
FROM [Village]
WHERE CONVERT(VARCHAR, CastleType) = 'foo'
와는 비교가 안 된다text
와 함께=
연산자 대신 여기에 나열된 비교 함수 중 하나를 사용해야 합니다.또한 페이지 상단에 있는 큰 경고 상자도 중요합니다.
varchar(max)를 사용하도록 테이블 자체의 데이터 유형을 변경할 수 없는 경우 쿼리를 다음과 같이 변경합니다.
SELECT *
FROM [Village]
WHERE CONVERT(VARCHAR(MAX), [CastleType]) = 'foo'
그것은 에러 메세지가 나타내는 것이 아닙니다.사용할 수 없다고 되어 있습니다.=
교환입니다.예를 들어 시도하다LIKE 'foo'
.
또 다른 옵션은 다음과 같습니다.
SELECT * FROM [Village] WHERE PATINDEX('foo', [CastleType]) <> 0
이것은 MSQL 및 MySQL에서 동작합니다.
SELECT *
FROM Village
WHERE CastleType LIKE '%foo%';
언급URL : https://stackoverflow.com/questions/4350060/where-clause-on-sql-server-text-data-type
'source' 카테고리의 다른 글
Git 저장소의 병합 충돌을 해결하려면 어떻게 해야 합니까? (0) | 2023.04.11 |
---|---|
제목 변경 시 원치 않는 UIButton 애니메이션을 중지하는 방법 (0) | 2023.04.11 |
연속 스트림을 '그립'하는 방법 (0) | 2023.04.11 |
Postgre에 인덱스가 있는 열 나열SQL (0) | 2023.04.11 |
식별자가 "인 앱 ID를 사용할 수 없습니다.다른 문자열을 입력하십시오. (0) | 2023.04.11 |