SQL Server "텍스트"데이터 형식의 WHERE 절
SQL Server에서 [CastleType]이 데이터 형식 "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)
가 더 쉽습니다.
또한 데이터의 크기는 얼마나 될까요? 동등 비교를 수행하려는 경우 이상적으로이 열을 색인화하는 것이 좋습니다. 이 유형의 쿼리 속도를 높이는 데 사용할 수 있는 계산 된 열 checksum
이나 hash
열을 추가 할 수 있지만 열을 900 바이트보다 넓은 것으로 선언하는 경우에는 불가능 합니다.
이것을 시도하십시오
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
이것은 MSSQL 및 MySQL에서 작동합니다.
SELECT *
FROM Village
WHERE CastleType LIKE '%foo%';
참고 URL : https://stackoverflow.com/questions/4350060/where-clause-on-sql-server-text-data-type
'program story' 카테고리의 다른 글
어떤 실제 WPF 애플리케이션이 있습니까? (0) | 2020.09.25 |
---|---|
CC, gcc 및 g ++의 차이점은 무엇입니까? (0) | 2020.09.25 |
Go 언어로 테스트하기위한 적절한 패키지 이름 지정 (0) | 2020.09.25 |
유클리드 알고리즘의 시간 복잡성 (0) | 2020.09.25 |
API 앱과 웹 앱의 차이점은 무엇입니까? (0) | 2020.09.25 |