[sql] 열의 모든 데이터를 대문자로 만드는 SQL 쿼리?

열의 모든 데이터를 대문자로 만들려면 SQL 쿼리가 필요합니까?

어떤 아이디어?



답변

영구적 인:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

일시적인:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable


답변

당신이 원하는 경우 현재 대문자되지 않은 행에만 갱신 (대신 모든 행의), 당신은 사용의 차이를 확인해야 것 COLLATE같은 :

UPDATE MyTable
SET    MyColumn = UPPER(MyColumn)
WHERE  MyColumn != UPPER(MyColumn) COLLATE Latin1_General_CS_AS

데이터 정렬에 대해 조금

대소 문자 구분은 데이터 정렬 설정을 기반으로하며 일반적으로 기본적으로 대소 문자를 구분하지 않습니다.

데이터 정렬은 서버, 데이터베이스, 열 또는 쿼리 수준 에서 설정할 수 있습니다 .

-- Server
SELECT SERVERPROPERTY('COLLATION')
-- Database
SELECT name, collation_name FROM sys.databases
-- Column 
SELECT COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE CHARACTER_SET_NAME IS NOT NULL

데이터 정렬 이름 은 문자열을 인코딩하고 읽는 방법을 지정합니다. 예를 들면 다음과 같습니다.

  • Latin1_General_CI_AS → 대소 문자 구분 안함
  • Latin1_General_CS_AS → 대소 문자 구분


답변