2017-11-06 1 views
0

나는 SQL 서버에서 테이블을 열 테스트를 가지고 있고,문자열의 대소 문자를 확인하는 방법은 무엇입니까?

test 
------- 
This Is Another Test 
This is another Test 

내가 나에게 출력을 반환해야 테이블을 조회 할 :

예상 출력 :

test 
------- 
This Is Another Test 

쿼리 전 서면으로 나에게 올바른 결과를 확인하지 못함 :

select * from proptest where test like '[A-Z][a-z]{2}(?: [A-Z][a-z]*)*$'; 

값이 올바른지 여부를 확인하는 방법은 무엇입니까?

+0

칼럼 정렬? – jarlh

+1

Java와 여기서 어떤 관계가 있습니까? – Mena

+0

'[AZ] [az] {2}'는 길이가 3 인 단어와 만 일치합니다. – Lino

답변

1

제목에 질문하신 내용은 질문 및 의견과 다릅니다. 당신은 적절한 사건이 실제로 무엇인지 이해하지 못하거나 각 단어의 시작 부분에 대문자를 확인하기 만하면됩니다.

실제로 올바른 케이스를 확인하려는 경우 영어가 제공하는 멋진 변형을 모두 처리해야합니다. 예를 들어, Sean McDonald은 적절한 경우로 계산합니까? Sean Mcdonald은 어떨까요? 다음 MacDonaldMacdonald다음 당신이 하이픈 또는 약식 단어를 가질 재미가 있습니다. O'LearyDon't도 똑같이 취급해야합니까?

요약하면 이것은 거의 불가능합니다. 특히 모두 SQL로 직접 작성하십시오.


방금 ​​소문자가있는 모든 문자열을 찾으려면 먼저 다음을 수행 할 수 있습니다, 말했다 :

declare @t table(t nvarchar(100)); 
insert into @t values('This Is Another Test'),('This is another Test'); 

select * 
from @t 
where t collate Latin1_General_CS_AS not like '% [abcdefghijklmnopqrstuvwxyz]%'; -- For some reason [a-z] still matches upper case letters on my machine. 

출력 :

+----------------------+ 
|   t   | 
+----------------------+ 
| This Is Another Test | 
+----------------------+ 
2

사용 BINARY은 바이트 단위로 비교합니다.

SELECT * from proptest WHERE BINARY test='This Is Another Test'; 
관련 문제