Đối chiếu có nghĩa là gì?


138

Đối chiếu có nghĩa là gì trong SQL và nó làm gì?


2
@gbn: Ngẫu nhiên, đối chiếu hoạt động theo cách rất giống nhau trong cả MSSQL và MySQL.
Piskvor rời khỏi tòa nhà


@Piskvor: Ngoại trừ một số tùy chọn đối chiếu mySql (ví dụ: UTF8) không có sẵn trong MSSQL: msdn.microsoft.com/en-us/l
CB

@CB: Không phủ nhận điều đó; sự giống nhau đi sâu hơn so với (un) bộ ký tự được hỗ trợ.
Piskvor rời khỏi tòa nhà

Câu trả lời:


60

Đối chiếu có thể được nghĩ đơn giản là sắp xếp thứ tự.

Trong tiếng Anh (và đó là anh em họ lạ, người Mỹ), đối chiếu có thể là một vấn đề khá đơn giản bao gồm việc đặt hàng theo mã ASCII.

Khi bạn đã có được những ngôn ngữ châu Âu kỳ lạ đó với tất cả các điểm nhấn và các tính năng khác, các đối chiếu sẽ thay đổi. Ví dụ, mặc dù các hình thức có dấu khác nhau có athể tồn tại ở các điểm mã khác nhau, tất cả chúng có thể cần được sắp xếp như thể chúng là cùng một chữ cái.


4
Giọng khác nhau thường có nghĩa là họ cần phải được sắp xếp như thể chúng là khác nhau chữ - ví dụ như e, ë, é, ě, và è có thể được chữ riêng biệt cho các mục đích của trật tự (nhưng có thể cùng một lá thư khi tìm kiếm, chết tiệt những điên người châu Âu;)).
Piskvor rời khỏi tòa nhà

1
@Piskvor: không tọa độ trong thông tin của bạn chỉ đến một quốc gia nhất định bằng cách sử dụng bảng chữ cái với 42các chữ cái, 15trong số chúng có dấu phụ?
Quassnoi

4
@Quassnoi: Vâng, vâng? Tôi có ngụ ý bất cứ nơi nào mà tôi không điên? ; o) (mặc dù cảm ơn Chúa vì Unicode, tôi sẽ nổi điên nếu tôi vẫn phải làm việc với các bộ ký tự cụ thể của quốc gia)
Piskvor rời khỏi tòa nhà

3
@Piskvor: xin lỗi, xin lỗi, bạn hoàn toàn điên rồ! :)
Quassnoi

Nó chỉ dành cho sắp xếp hay cũng cho where st= 'aaa'?
Royi Namir

42

Bên cạnh "các chữ cái có dấu được sắp xếp khác với các chữ cái không có dấu" trong một số ngôn ngữ Tây Âu, bạn phải tính đến các nhóm chữ cái đôi khi cũng được sắp xếp khác nhau.

Theo truyền thống, trong tiếng Tây Ban Nha, "ch" được coi là một chữ cái theo đúng nghĩa của nó, giống với "ll" (cả hai đều đại diện cho một âm vị duy nhất), vì vậy một danh sách sẽ được sắp xếp như sau:

  • caballo
  • rạp chiếu phim
  • coche
  • than củi
  • sô cô la
  • chueco
  • dado
  • (...)
  • lámpara
  • luego
  • llanta
  • lluvia
  • madera

Thông báo tất cả các từ bắt đầu bằng single c đi cùng nhau, ngoại trừ từ bắt đầu bằng ch mà đi sau họ, cùng với ll -starting lời mà đi sau khi tất cả các từ bắt đầu bằng một đơn l . Đây là thứ tự bạn sẽ thấy trong các từ điển và bách khoa toàn thư cũ, đôi khi thậm chí ngày nay bởi các tổ chức rất bảo thủ.

Học viện Ngôn ngữ Hoàng gia đã thay đổi điều này để giúp tiếng Tây Ban Nha dễ dàng hơn trong thế giới điện toán. Tuy nhiên, ñ vẫn được coi là một chữ cái khác với n và đi sau nó, và trước o . Vì vậy, đây là một danh sách được sắp xếp chính xác:

  • Namibia
  • núm
  • ñandú
  • NU
  • chướng ngại vật
  • ojo

Bằng cách chọn đối chiếu chính xác, bạn sẽ tự động hoàn thành tất cả việc này cho mình :-)


OK, vì vậy một đối chiếu khá hữu ích để sắp xếp chính xác, nhưng nó vẫn hữu ích để so sánh? Ví dụ, tôi muốn có 'ñandú' và 'nandu' xuất hiện như nhau, vì lý do thực tế ... Cơ chế đối chiếu có thể giúp tôi thực hiện nhiệm vụ này không?
CB

@ C. truy vấn có thể làm điều đó. Tuy nhiên, bạn sẽ gặp vấn đề về hiệu năng nếu đối chiếu này rất khác so với bản gốc của cơ sở dữ liệu. Và nếu bạn sử dụng các bảng tạm thời, bạn cũng phải theo dõi đối chiếu của tempdb ... Nhưng bạn có thể làm được.
Joe Pineda

Trong trường hợp đó, bạn có thể vui lòng giải thích thêm một chút không? Cụ thể, liệu truy vấn đơn giản "CHỌN từ TỪ bài kiểm tra Từ đâu THÍCH 'nandu'" có thể làm điều đó không? Và tôi nên sử dụng đối chiếu nào để nó hoạt động? (Lưu ý rằng tôi quan tâm đến các dấu phụ, và không chỉ dấu trọng âm ...)
CB

2
@CB hãy xem phần 'AI' hoặc 'AS' của đối chiếu (Accent Insensitive và Accent Sensitive).
Dustin Kendall

14

Các quy tắc cho biết cách so sánh và sắp xếp các chuỗi: thứ tự chữ cái; cho dù trường hợp quan trọng, cho dù diacritics vấn đề vv

Ví dụ: nếu bạn muốn tất cả các chữ cái khác nhau (giả sử, nếu bạn lưu tên tệp vào UNIX), bạn sử dụng UTF8_BINđối chiếu:

SELECT  'A' COLLATE UTF8_BIN = 'a' COLLATE UTF8_BIN

---
0

Nếu bạn muốn bỏ qua các khác biệt về trường hợp và dấu phụ (giả sử đối với công cụ tìm kiếm), bạn sử dụng UTF8_GENERAL_CIđối chiếu:

SELECT  'A' COLLATE UTF8_GENERAL_CI = 'ä' COLLATE UTF8_GENERAL_CI

---
1

Như bạn có thể thấy, đối chiếu này (quy tắc so sánh) xem xét vốn Avà lowecase äcùng một chữ cái, bỏ qua các trường hợp khác nhau và dấu phụ.


10

Collation xác định cách bạn sắp xếp và so sánh các giá trị chuỗi

Ví dụ, nó định nghĩa cách đối phó

  • dấu ( äàavv)
  • trường hợp ( Aa)
  • bối cảnh ngôn ngữ:
    • Trong một đối chiếu của Pháp, cote < côte < coté < côté.
    • Trong mặc định SQL Server Latin1, cote < coté < côte < côté
  • ASCII sắp xếp (đối chiếu nhị phân)

5

Đối chiếu có nghĩa là gán một số thứ tự cho các ký tự trong Bảng chữ cái, giả sử, ASCII hoặc Unicode, v.v.

Giả sử bạn có 3 ký tự trong bảng chữ cái - {A, B, C}. Bạn có thể xác định một số đối chiếu mẫu cho nó bằng cách gán các giá trị tích phân cho các ký tự

  1. Ví dụ 1 = {A = 1, B = 2, C = 3}
  2. Ví dụ 2 = {C = 1, B = 2, A = 3}
  3. Ví dụ 3 = {B = 1, C = 2, A = 3}

Như một vấn đề thực tế, bạn có thể định nghĩa n! đối chiếu trên Bảng chữ cái kích thước n. Đưa ra một thứ tự như vậy, các thói quen sắp xếp khác nhau như sắp xếp chuỗi LSD / MSD sử dụng nó để sắp xếp các chuỗi.


3

Đối chiếu xác định cách dữ liệu của bạn được sắp xếp và so sánh. Điều này rất quan trọng đối với việc liên kết nội bộ, ví dụ như cách bạn sắp xếp chữ Hán?

Nếu bạn google đối chiếu và máy chủ sql, bạn sẽ tìm thấy rất nhiều bài viết thảo luận về nó!


3

Tham chiếu được lấy từ Điều này: Đối chiếu là một bộ quy tắc để so sánh các ký tự trong một bộ ký tự. Nó cũng đã được cai trị để sắp xếp các ký tự và thứ tự đúng của hai ký tự khác nhau tùy theo ngôn ngữ. Một Collation so sánh hai chuỗi như, nếu một từ lớn hơn một chuỗi khác và sắp xếp tương ứng.

Nếu bạn đang sử dụng bộ Ký tự Latin latin1, bạn có thể sử dụng Bộ sưu tập Latin latin1_swbur_ci.

Bạn phải chọn đối chiếu đúng vì đối chiếu sai có thể ảnh hưởng đến hiệu suất cơ sở dữ liệu của bạn.


2

http://en.wikipedia.org/wiki/Collation

Đối chiếu là tập hợp các thông tin bằng văn bản thành một thứ tự tiêu chuẩn. (...) Một thuật toán đối chiếu, chẳng hạn như thuật toán đối chiếu Unicode xác định một thứ tự thông qua quá trình so sánh hai chuỗi ký tự đã cho và quyết định cái nào sẽ đi trước cái kia.



1
Bài viết này thực sự giải thích tất cả.
Joe Pineda

3
@Joe Pineda. Có lẽ nó thực sự giải thích tất cả, nhưng người đọc có muốn biết tất cả không? Hoặc có thể người đọc chỉ muốn một câu trả lời ngắn gọn, đáng tin cậy bao gồm các yếu tố và chức năng cơ bản nhất và thường được sử dụng để đối chiếu để anh ta có thể đọc nó nhanh chóng và tiếp tục làm việc với bất kỳ nhiệm vụ, nhiệm vụ hoặc dự án nào đã đưa ra câu hỏi bắt đầu với?
cfwschmidt

2
@TJCrowder Tôi đánh giá cao sự mỉa mai trong việc này

1

Đối chiếu là cách máy chủ SQL quyết định cách sắp xếp và so sánh văn bản.

Xem MSDN .

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.