대문자 포함되는검색 0 6 2,543

by 스캇 [SQLServer] [2018.09.19 09:41:22]


안녕하세요.  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)

by 우리집아찌 [2018.09.19 10:08:13]

SQL-SERVER 인가요?

사용자 정의 함수 만드셔야할것같은데요.

아마 . REAPLCE 로 한땀식 A~Z 까지 '' 바꾼후 원본과 LEN 로 비교하는 함수 => 해당문자가 사라지니 몇개가 틀린지 검색되겠죠.

검색이 느리면 FBI 를 쓰면 될것같네요.

 


by 스캇 [2018.09.19 10:34:24]

네 감사합니다. 쿼리로는 없군요..ㅠㅠ


by 마농 [2018.09.19 10:49:39]
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이 나옴. (ㅠ,.ㅠ)
대소문자 구별되도록 설정 바꾸는 법 아시는 분?


by 신이만든지기 [2018.09.19 12:14:04]

디폴트로 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-대소문자-구분 [토순이네집]

 


by 마농 [2018.09.19 12:17:12]

음 적용을 해 보았는데...
 - 1,4 번 일반식은 되는데.
 - 2,3 번 정규식은 안먹네요.


by 마농 [2018.09.19 13:31:51]
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. 소문자 만
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입