안녕하세요. MS SQL 2014 사용하고 있는데 대소문자만 들어가 있는 쿼리를 구현하려고 하는데
검색해봐도 답이 안나오네요? 고수님도 부탁 드립니다.
NO NAME
1 Abc
2 BCD
3 DeFgZ
1. 해당 컬럼에 대문자로 A로 시작하는것 검색 (결과 NO 1)
-> SELECT * FROM TEST WHERE COLLATE Korean_Wansung_CS_AS NAEM LIKE 'A%'
2.해당 컬럼에 대문자가 하나라도 들어가 있는것만 검색 (결과 NO -> 1,2,3)
3. 해당 컬럼에 소문자가 하나라도 들어가 있는것만 검색 (결과 NO -> 1,3)
4. 해당 컬럼에 대문자 전체로 되어 있는 컬럼 조회 검색 (결과 NO -> 2)
WITH t AS ( SELECT 1 no, 'Abc' name UNION ALL SELECT 2, 'BCD' UNION ALL SELECT 3, 'DeFgZ' ) SELECT * FROM t -- WHERE name LIKE 'A%' -- 1 -- WHERE name LIKE '%[A-Z]%' -- 2 -- WHERE name LIKE '%[a-z]%' -- 3 -- WHERE UPPER(name) = name -- 4 ;
이렇게 하면 되야 할 것 같은데...
이상하게 제 PC 에 있는 2014 버전은 대소문자 구별을 안해서 제대로된 결과가 안나오네요???
SELECT CASE WHEN 'NaMe' = 'nAmE' THEN 1 ELSE 0 END x ===> 결과가 1이 나옴. (ㅠ,.ㅠ)
대소문자 구별되도록 설정 바꾸는 법 아시는 분?
디폴트로 sql server 설치 시, 대소문자를 구분하지 않는다고 합니다.
디폴트로 테이블 생성시, 대소문자를 구분하지 않는다고 합니다.
이럴경우 아래와 같이 하면 대소문자를 구분한다고 합니다.
※ Korean_Wansung_CS_AS
(1) Korean_Wansung : 언어
(2) CS : 대소문자 구분
(CI : 대소문자 구분 안함)
(3) AS : 액센스트 구분
(AI : 액센트 구분 안함)
출처: http://docko.tistory.com/entry/MSSQL-영문-대소문자-구분-검색하기 [Smart Phone for Human]
SELECT * FROM Tb1 WHERE eng COLLATE Korean_Wansung_CS_AS ='abc' 출처: http://kmj1107.tistory.com/entry/MS-SQL-대소문자-구분 [토순이네집]
WITH t AS ( SELECT 1 no, 'Abc' name UNION ALL SELECT 2, 'BCD' UNION ALL SELECT 3, 'DeFgZ' UNION ALL SELECT 4, 'zzz' ) SELECT * FROM (SELECT no -- 대소문자 구별하도록 COLLATE 변경 -- , name COLLATE Korean_Wansung_CS_AS AS name FROM t ) a -- WHERE name LIKE 'A%' -- 1. A 로 시작 -- WHERE LOWER(name) != name -- 2. 대문자 포함 -- WHERE UPPER(name) != name -- 3. 소문자 포함 -- WHERE UPPER(name) = name -- 4. 대문자 만 -- WHERE LOWER(name) = name -- 5. 소문자 만 ;