Truy vấn SQL để tạo tất cả dữ liệu trong một cột LÊN CASE?


82

Tôi cần truy vấn SQL để tạo tất cả dữ liệu trong một cột TĂNG CASE?

Có ý kiến ​​gì không?

Câu trả lời:


192

Dài hạn:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

Tạm thời:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable

16

Nếu bạn chỉ muốn cập nhật trên các hàng hiện không phải là chữ hoa (thay vì tất cả các hàng), bạn cần xác định sự khác biệt bằng cách sử dụng COLLATEnhư sau:

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

Một chút về đối chiếu

Độ phân biệt chữ hoa chữ thường dựa trên cài đặt đối chiếu của bạn và thường không phân biệt chữ hoa chữ thường theo mặc định.

Đối chiếu có thể được đặt ở Cấp máy chủ, Cơ sở dữ liệu, Cột hoặc Truy vấn :

-- 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

Tên đối chiếu chỉ định cách mã hóa và đọc một chuỗi, ví dụ:

  • Latin1_General_CI_AS → Không phân biệt chữ hoa chữ thường
  • Latin1_General_CS_AS → Phân biệt chữ hoa chữ thường
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.