복붙노트

[SQL] SQL 서버는 어디 식 케이스를 무시

SQL

SQL 서버는 어디 식 케이스를 무시

어떻게 SQL 쿼리 (MS SQL 서버)를 구성 할 곳 "여기서"절이 대소 문자를 구별하지?

SELECT * FROM myTable WHERE myField = 'sOmeVal'

나는 결과가 사건을 무시하고 다시오고 싶어

해결법

  1. ==============================

    1.는 SQL Server 데이터베이스의 기본 구성에서, 문자열 비교는 대소 문자를 구분하지 않는다. 데이터베이스가 (다른 조합의 사용을 통해)이 설정을 무시하는 경우에, 당신은 일종의 조합의 쿼리에 사용할 것을 지정해야합니다.

    는 SQL Server 데이터베이스의 기본 구성에서, 문자열 비교는 대소 문자를 구분하지 않는다. 데이터베이스가 (다른 조합의 사용을 통해)이 설정을 무시하는 경우에, 당신은 일종의 조합의 쿼리에 사용할 것을 지정해야합니다.

    SELECT * FROM myTable WHERE myField = 'sOmeVal' COLLATE SQL_Latin1_General_CP1_CI_AS
    

    내가 제공하는 데이터 정렬 그냥 예입니다 있습니다 (비록 것 더 잘 당신을위한 가능성 기능 이하). SQL 서버 데이터 정렬의보다 철저한 개요는 여기에서 찾을 수 있습니다.

  2. ==============================

    2.일반적으로, 문자열 비교는 대소 문자를 구분하지 않는다. 데이터베이스가 대소 문자를 구분 데이터 정렬로 구성된 경우, 하나를 구분 케이스를 사용하도록 강제해야합니다

    일반적으로, 문자열 비교는 대소 문자를 구분하지 않는다. 데이터베이스가 대소 문자를 구분 데이터 정렬로 구성된 경우, 하나를 구분 케이스를 사용하도록 강제해야합니다

    SELECT balance FROM people WHERE email = 'billg@microsoft.com'
      COLLATE SQL_Latin1_General_CP1_CI_AS 
    
  3. ==============================

    3.나는 다른 곳에서 또 다른 해결책을 발견; 그 사용한다

    나는 다른 곳에서 또 다른 해결책을 발견; 그 사용한다

    upper(@yourString)
    

    그러나 여기 모두가 어쨌든 사건을 무시하고 있기 때문에 SQL 서버에서, 그것은 중요하지 않습니다 것을 말하고있다? 나는 우리의 데이터베이스는 대소 문자를 구분 확신합니다.

  4. ==============================

    4.그들은 기술적으로 일을한다는 점에서 (아담 로빈슨과 안드레이 Cainikovs)에서 최고 2 답변, 정확한 그렇다고, 좀 있지만, 그 설명은 잘못 때문에 많은 경우에 오해의 소지가 될 수있다. 예를 들어, SQL_Latin1_General_CP1_CI_AS 데이터 정렬이 많은 경우에 작동하지만, 적절한 대소 문자를 구분 데이터 정렬로 간주되어서는 안된다. 사실, 영업 이익은 대소 문자를 구분하는 (또는 가능 바이너리) 정렬이있는 데이터베이스에서 작동하고 있는지 주어, 우리는 OP 특히 어떤 운영체제에 설치되어 많은 설치를위한 기본 (인 정렬을 사용하지 않는 것을 알고있다 ) 언어로 영어를 사용 : SQL_Latin1_General_CP1_CI_AS 데이터를. 물론, 영업 이익은 SQL_Latin1_General_CP1_CS_AS을 사용할 수 있지만 VARCHAR 데이터로 작업 할 때, 그것은 중요는 데이터가 손실 될 수 있기 때문에 코드 페이지를 변경하지, 그 (즉 Latin1_General 프랑스 대 조합의 로케일 / 문화에 의해 제어됩니다 대 히브리어 등). 아래 지점 # 9를 참조하십시오.

    그들은 기술적으로 일을한다는 점에서 (아담 로빈슨과 안드레이 Cainikovs)에서 최고 2 답변, 정확한 그렇다고, 좀 있지만, 그 설명은 잘못 때문에 많은 경우에 오해의 소지가 될 수있다. 예를 들어, SQL_Latin1_General_CP1_CI_AS 데이터 정렬이 많은 경우에 작동하지만, 적절한 대소 문자를 구분 데이터 정렬로 간주되어서는 안된다. 사실, 영업 이익은 대소 문자를 구분하는 (또는 가능 바이너리) 정렬이있는 데이터베이스에서 작동하고 있는지 주어, 우리는 OP 특히 어떤 운영체제에 설치되어 많은 설치를위한 기본 (인 정렬을 사용하지 않는 것을 알고있다 ) 언어로 영어를 사용 : SQL_Latin1_General_CP1_CI_AS 데이터를. 물론, 영업 이익은 SQL_Latin1_General_CP1_CS_AS을 사용할 수 있지만 VARCHAR 데이터로 작업 할 때, 그것은 중요는 데이터가 손실 될 수 있기 때문에 코드 페이지를 변경하지, 그 (즉 Latin1_General 프랑스 대 조합의 로케일 / 문화에 의해 제어됩니다 대 히브리어 등). 아래 지점 # 9를 참조하십시오.

    다른 네 개의 답변 다양한 각도로 잘못입니다.

    여기 그래서 독자가 희망이 가장 적절한 / 효율적인 선택을 할 수 있다는 오해를 모두 명확하게됩니다.

    데이터 정렬에 대한 자세한 정보를 원하시면, 인코딩 등은 다음 페이지를 참조하세요 데이터 정렬 정보를

  5. ==============================

    5.아니요, LIKE가 작동하지 않습니다 사용. LIKE는 정확히 주어진 패턴과 일치하는 값을 검색합니다. 이 경우 LIKE는 텍스트 만 'sOmeVal'이 아니라 'someval'을 찾을 것입니다.

    아니요, LIKE가 작동하지 않습니다 사용. LIKE는 정확히 주어진 패턴과 일치하는 값을 검색합니다. 이 경우 LIKE는 텍스트 만 'sOmeVal'이 아니라 'someval'을 찾을 것입니다.

    pracitcable 용액은 LCASE () 함수를 사용한다. LCASE ( 'sOmeVal')는 텍스트의 소문자 문자열을 가져옵니다 'someval'. 당신이 당신의 비교의 양쪽이 기능을 사용하는 경우, 그것은 작동합니다 :

    SELECT * FROM myTable에 WHERE LCASE (myField)를 LIKE LCASE ( 'sOmeVal')

    성명은 'sOmeVal가'someval '(예를 들어,'Someval ','sOMEVAl '등)의 모든 다른 표기법을 일치 그래서, 두 개의 소문자 문자열을 비교합니다.

  6. ==============================

    6.당신은 그런 VARBINARY에 캐스팅, 민감한 경우 강제 할 수 있습니다 :

    당신은 그런 VARBINARY에 캐스팅, 민감한 경우 강제 할 수 있습니다 :

    SELECT * FROM myTable 
    WHERE convert(varbinary, myField) = convert(varbinary, 'sOmeVal')
    
  7. ==============================

    7.당신은 어떤 데이터베이스에있는? MS SQL 서버, 그것은 데이터베이스 전체 설정, 또는 당신은 COLLATE 키워드로 당 쿼리를 오버 탈 수 있습니다.

    당신은 어떤 데이터베이스에있는? MS SQL 서버, 그것은 데이터베이스 전체 설정, 또는 당신은 COLLATE 키워드로 당 쿼리를 오버 탈 수 있습니다.

  8. from https://stackoverflow.com/questions/1224364/sql-server-ignore-case-in-a-where-expression by cc-by-sa and MIT license