문제

을 수행하기 위해서 대소문자를 구분하는 검색/바꾸기에서 테이블에 SQL Server2000/2005 데이터베이스를 사용해야 합니다 올바른 데이터 정렬입니다.

어떻게 여부를 확인하 기본 정렬 데이터베이스에 대한은 대소문자를 구분하고,그렇지 않은 경우,수행하는 방법에 대/소문자를 구분하여 검색/대?

도움이 되었습니까?

해결책

SELECT testColumn FROM testTable  
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'example' 

SELECT testColumn FROM testTable
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'EXAMPLE' 

SELECT testColumn FROM testTable 
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'eXaMpLe' 

다고 가정하지 않은 기본 정렬이 될 것입니다 경우 민감한 지정하는 경우 민감나마(사용하에 대한 올바른 하나의 언어 코스)

다른 팁

지 여부를 결정하 기본 정렬은 경우 민감한 다음과 같다:

select charindex('RESULT', 'If the result is 0 you are in a case-sensitive collation mode')

그 결과의 0 에 있음을 나타냅 경우 민감한 정렬이 모드,8 임을 나타내는 대소문자를 구분하지 않습니다.

는 경우 콜레이션은,대/소문자를 구분하지 않고 당신이 명시적으로 선언해야 합 정렬하고자 하는 모드를 사용하여 수행하는 경우 검색/교체합니다.

여기를 구성하는 방법을 업데이트 문을 수행할 경우 민감한 검색/바꾸기에 의해 지정하는 콜레이션 모드를 사용:

update ContentTable
set ContentValue = replace(ContentValue COLLATE Latin1_General_BIN, 'THECONTENT', 'TheContent')
from StringResource
where charindex('THECONTENT', ContentValue COLLATE Latin1_General_BIN) > 0

이치 및 교체 'THECONTENT', 지 'TheContent''thecontent'.

이 있는 경우 서로 다른 경우 동일한 단어 에서 같은 분야, 만하고 싶 대체 특정 사례, 다음을 사용할 수 있습에 정렬 REPLACE 기능:

UPDATE tableName
SET fieldName = 
    REPLACE(
        REPLACE(
            fieldName COLLATE Latin1_General_CS_AS,
            'camelCase' COLLATE Latin1_General_CS_AS,
            'changedWord'
        ),
        'CamelCase' COLLATE Latin1_General_CS_AS,
        'ChangedWord'
    )

이 결과는:

This is camelCase 1 and this is CamelCase 2

되:

This is changedWord 1 and this is ChangedWord 2

에서 할 수 있는 여러 문입니다.이 지 않을 것이다 작동이 있는 경우 긴 문자열을 모두 포함하는 대문자는 소문자로 말씀하려는 교체합니다.해야 할 수도 있습니다 사용하는 다른 데이터 정렬 이것은 악센트이며 대소문자를 구분합니다.

UPDATE T SET [String] = ReplacedString
FROM [dbo].[TranslationText] T, 
    (SELECT [LanguageCode]
      ,[StringNo]
      ,REPLACE([String], 'Favourite','Favorite') ReplacedString
    FROM [dbo].[TranslationText]
    WHERE 
    [String] COLLATE Latin1_General_CS_AS like '%Favourite%'
    AND [LanguageCode] = 'en-us') US_STRINGS
WHERE 
T.[LanguageCode] = US_STRINGS.[LanguageCode] 
AND T.[StringNo] = US_STRINGS.[StringNo]

UPDATE T SET [String] = ReplacedString
FROM [dbo].[TranslationText] T, 
    (SELECT [LanguageCode]
      ,[StringNo]
      , REPLACE([String], 'favourite','favorite') ReplacedString 
    FROM [dbo].[TranslationText]
    WHERE 
    [String] COLLATE Latin1_General_CS_AS like '%favourite%'
    AND [LanguageCode] = 'en-us') US_STRINGS
WHERE 
T.[LanguageCode] = US_STRINGS.[LanguageCode] 
AND T.[StringNo] = US_STRINGS.[StringNo]

먼저 이를 확인:http://technet.microsoft.com/en-us/library/ms180175(SQL.90).aspx

당신이 볼 것 CI 지정하는 경우를 구분하지 않고 CS 지정하는 대소문자를 구분합니다.

또한,이 될 수 있습 유용합니다.select*from fn_helpcollations()-이 모든 콜레이션 서버 지원합니다.선택*sys.데이터베이스-여기에 열을 지정하는 콜레이션에는 모든 데이터베이스 서버에 있습니다.

지정할 수 있습니다 정렬 모든 시간을 당신은 테이블을 쿼리하거나 당신에 적용할 수 있는 콜레이 칼럼(s)여 영구적으로 바꾸는 테이블.

당신이 선택하는 경우 쿼리를 수행 방법의 유익한 포함하는 경우 검색 구분 인수 뿐만 아니라.당신이 볼 수는 SQL 선택하는 것이 더 효율적 exec 계획하는 경우에 당신은 그들을 포함됩니다.예를 들어:

SELECT testColumn FROM testTable 
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'eXaMpLe' 
    and testColumn = 'eXaMpLe'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top