Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khóa chính không phân biệt chữ hoa chữ thường của loại nvarchar trong đó ß! =Ss

À, nhưng nó có thể vì có đối chiếu xử lý điều này một cách tự nhiên (thực tế là một số, nhưng tất cả trong cùng một "họ"): Hungarian_Technical_ * (tốt, trừ các biến thể Phân biệt chữ hoa chữ thường (CS) và Nhị phân (BIN / BIN2)). Tất nhiên, tôi vẫn không chắc đây là một lựa chọn tốt cho PK, nhưng không có lý do gì nó không thể là UNIQUE INDEX .

SELECT tmp.*,
       IIF(tmp.[First] = tmp.[Second] COLLATE Hungarian_Technical_CI_AI,
           N'Equal',
           N'NOT EQUAL') AS [Result]
FROM (
      SELECT N'weiß', N'Weiß', N'Equal'
      UNION ALL
      SELECT N'weiss', N'Weiss', N'Equal'
      UNION ALL
      SELECT N'weiß', N'weiss', N'NOT Equal'
      UNION ALL
      SELECT N'Weiß', N'Weiss', N'NOT Equal'
      UNION ALL
      SELECT N'weiß', N'Weiss', N'NOT Equal'
      ) tmp ([First], [Second], [Ideal]);

Kết quả:

First   Second  Ideal       Result
weiß    Weiß    Equal       Equal
weiss   Weiss   Equal       Equal
weiß    weiss   NOT Equal   NOT EQUAL
Weiß    Weiss   NOT Equal   NOT EQUAL
weiß    Weiss   NOT Equal   NOT EQUAL

Có tổng số 24 đối chiếu sẽ hoạt động theo cách này. Bạn có thể tìm thấy chúng qua:

SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;

Đó là:

Nếu phiên bản 100 Các đối chiếu có sẵn (nghĩa là:bạn đang sử dụng SQL Server 2008 hoặc mới hơn), sau đó sử dụng các đối tượng đó chứ không phải các đối chiếu không có số phiên bản trong tên của chúng.

CHỈNH SỬA:
Tôi đã tìm thấy một số thông tin bổ sung về đối chiếu "Kỹ thuật Hungary" có thể được quan tâm:

  • MySQL:Đối chiếu tiếng Hungary - Đây là kho lưu trữ của cuộc thảo luận listerv của một số nhà phát triển MySQL đang cố gắng tìm ra các chi tiết cụ thể về cách triển khai đối chiếu. Rõ ràng nó có một số quy tắc phức tạp, ít nhất một phần do cần phải đánh đồng nhiều ký tự thành một ký tự duy nhất để sắp xếp (tìm phần "3. Quy tắc digraph / trigraph đặc biệt"). Điều này có thể gây ra một số hành vi không mong muốn. Các kết hợp chữ cái cụ thể được lưu ý trong phần đó, vì vậy ít nhất nó giúp dễ dàng hơn trong việc thiết lập trường hợp kiểm tra để giúp xác định xem các quy tắc sắp xếp có mất hiệu lực bằng cách sử dụng đối chiếu này hay không.

  • Tại sao có rất nhiều (106) ảnh ghép tiếng Hungary? - Đây là một cuộc thảo luận trên social.msdn có một số thông tin thú vị. Có một bình luận trong đó của Erland Sommarsko, trong đó anh ấy nói:

    Với cuộc thảo luận từ các nhà phát triển MySQL về các quy tắc phức tạp, những kết quả kiểm tra đó dường như không đáng ngạc nhiên.

Vì vậy, cả hai mục này có lẽ nên được tính vào việc quyết định có nên đi theo con đường dễ dàng hay không là chỉ cần đặt trường NVARCHAR thành một trong những đối chiếu Kỹ thuật Hungary này hoặc theo đề xuất của @ GarethD về cột được tính toán.

Để biết thêm thông tin về cách làm việc với chuỗi và ảnh ghép, vui lòng truy cập: Thông tin về ảnh ghép



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để so sánh cùng một DB cho Lược đồ và Bảng của chúng?

  2. Lấy phần bên trái của chuỗi trong SQL Server (T-SQL)

  3. Làm cách nào để tôi có thể hiển thị dữ liệu năm dự báo từ hàng thành cột?

  4. Trả về tham số đầu ra varchar (max) từ thủ tục được lưu trữ cắt ngắn thành 4000 ký tự

  5. Cấp quyền truy cập vào một db cho người dùng / vai trò của người khác