where where 절이 대소 문자를 구분하지 않는 SQL 쿼리 (MS SQL Server)를 어떻게 구성합니까?SQL 서버가 where 식에서 대소 문자를 구분하지 않음
SELECT * FROM myTable WHERE myField = 'sOmeVal'
나는 결과가 당신에 무엇 데이터베이스의 경우
where where 절이 대소 문자를 구분하지 않는 SQL 쿼리 (MS SQL Server)를 어떻게 구성합니까?SQL 서버가 where 식에서 대소 문자를 구분하지 않음
SELECT * FROM myTable WHERE myField = 'sOmeVal'
나는 결과가 당신에 무엇 데이터베이스의 경우
SQL Server 데이터베이스의 기본 구성에서 문자열 비교 은 (는)이며 대/소문자를 구분하지 않습니다. 데이터베이스가 대체 데이터 정렬을 사용하여이 설정을 무시하면 쿼리에 사용할 데이터 정렬의 종류를 지정해야합니다.
SELECT * FROM myTable WHERE myField = 'sOmeVal' COLLATE SQL_Latin1_General_CP1_CI_AS
필자가 제공 한 데이터 정렬은 단지 예일뿐입니다. SQL Server 데이터 정렬에 대한 자세한 내용은 here을 참조하십시오.
을 무시하고 다시오고 싶어? MS SQL Server를 사용하면 데이터베이스 전체의 설정이거나 COLLATE 키워드를 사용하여 쿼리 당 오버라이드 할 수 있습니다.
일반적으로 문자열 비교는 대소 문자를 구분하지 않습니다.
SELECT * FROM myTable
WHERE convert(varbinary, myField) = convert(varbinary, 'sOmeVal')
당신은 민감한 경우 강제 할 수 있습니다 : 데이터베이스가 구분 데이터 정렬을 구분하도록 구성되어있는 경우, 당신은 대소 문자를 구분 하나를 사용하여 강제로 필요 다른 해결책을 다른 곳에서 찾았습니다. 즉, 사용하려면
upper(@yourString)
그러나 여기있는 모든 사람들은 SQL Server에서 대소 문자를 무시하기 때문에 중요하지 않습니다. 나는 우리 데이터베이스가 대소 문자를 구분한다고 확신한다.
이것이 기능적이지만 바람직한 방법은 아닙니다. 데이터 정렬은 정렬 및 문자열 비교를 관리하는 데 사용됩니다. –
@AdamRobinson은 "문자열 비교"에 관한 것이 아닙니다. – Fandango68
I : 그런 VARBINARY에 캐스팅,
SELECT balance FROM people WHERE email = '[email protected]'
COLLATE SQL_Latin1_General_CP1_CI_AS
데이터베이스가 대소 문자를 구분할 수 있다는 것이 맞지만, 필요한 경우에도 매우 비효율적입니다. COLLATE는 사용할 키워드입니다. – mjaggard
@mjaggard를 가져 주셔서 감사합니다. 나는 당신이나 나의 대답을 혼란스럽게하는 것처럼 보이는 누군가가 나의 것과 같은 대답을 찾고 찾아내는 나 자신과 같은 사람의 유익을 위해 정교하기를 희망한다. – Danny
완벽하게 합리적인 설명이기 때문에 이것을 Upvoted. 너무 많은 오버 헤드가 발생합니다. 문자열에 문자열이 포함되어있어 데이터 정렬이 이해되지 않으면 어떻게됩니까? 라틴어 1은 형편없는 인코딩 체계입니다.문자열에 아포스트로피가 있으면 의미있는 결과를 얻으십시오 (Like : O'Brien). – eggmatters
아니요, LIKE
만 사용하면 작동하지 않습니다. LIKE
은 지정한 패턴과 정확히 일치하는 값을 검색합니다. 이 경우 LIKE
은 'someval'이 아닌 'sOmeVal'텍스트 만 찾습니다.
실용적인 솔루션은 LCASE()
기능을 사용하고 있습니다. LCASE('sOmeVal')
은 텍스트의 소문자 문자열 'someval'을 가져옵니다. 당신이 당신의 비교의 양쪽이 기능을 사용하는 경우, 그것은 작동합니다 : 당신의 'sOmeVal' 'someval'(예를 들어 'Someval의 모든 다른 표기법을 일치하도록
SELECT * FROM myTable WHERE LCASE(myField) LIKE LCASE('sOmeVal')
이
문은 두 개의 소문자 문자열을 비교 ','sOMEVA1 '등).
SQL Server 설치 중 99.9 %가 _CI로 조합되어 있으므로 LIKE는 대소 문자를 구분하지 않습니다. – RichardTheKiwi
누군가 나보다 빠릅니다 .-) –
+1 나는 당신의 간단한 (그리고 스크롤바가없는) 대답을 더 좋아했습니다. –