Độ phân biệt chữ hoa chữ thường ảnh hưởng đến quá trình lọc và sắp xếp dữ liệu và được xác định bởi. Sắp xếp và lọc dữ liệu mang lại các kết quả khác nhau tùy thuộc vào cài đặt của bạn
Trường hợp nhạy cảm Trường hợp nhạy cảm Trường hợp không nhạy cảmSắp xếp tăng dầnApple
, Banana
,
0,
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
1
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
Apple
,0,
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
Banana
,1Trận đấu
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
6
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
7
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
Apple
,7
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
Nếu bạn sử dụng trình kết nối cơ sở dữ liệu quan hệ, Prisma Client sẽ tôn trọng đối chiếu cơ sở dữ liệu của bạn. Các tùy chọn và đề xuất để hỗ trợ lọc và sắp xếp phân biệt chữ hoa chữ thường với Prisma Client tùy thuộc vào
Nếu bạn sử dụng trình kết nối MongoDB, Prisma Client sẽ sử dụng các quy tắc RegEx để bật tính năng lọc phân biệt chữ hoa chữ thường. Trình kết nối không sử dụng đối chiếu MongoDB
Ghi chú. Theo dõi tiến trình sắp xếp phân biệt chữ hoa chữ thường trên GitHub
Đối chiếu cơ sở dữ liệu và phân biệt chữ hoa chữ thường
Trong ngữ cảnh của Prisma Client, phần sau đây chỉ đề cập đến các trình kết nối cơ sở dữ liệu quan hệ
Đối chiếu chỉ định cách dữ liệu được sắp xếp và so sánh trong cơ sở dữ liệu, bao gồm cả cách viết hoa. Đối chiếu là thứ bạn chọn khi thiết lập cơ sở dữ liệu
Ví dụ sau minh họa cách xem đối chiếu cơ sở dữ liệu MySQL
SELECT @@character_set_database, @@collation_database;
Ẩn kết quả CLI
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_0900_ai_ci |
+--------------------------+----------------------+
Đối chiếu ví dụ,
0, là
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
- Không nhạy cảm với trọng âm [
1]SELECT id, email FROM User WHERE email LIKE "%prisMa%"
- Không phân biệt chữ hoa chữ thường [
2]SELECT id, email FROM User WHERE email LIKE "%prisMa%"
Điều này có nghĩa là
3 sẽ khớp với
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
4,
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
5,
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
6, v.v.
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
Ẩn kết quả CLI
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
Truy vấn tương tự với Prisma Client
const users = await prisma.user.findMany[{
where: {
email: {
contains: 'prisMa',
},
},
select: {
id: true,
name: true,
},
}]
Các tùy chọn để lọc phân biệt chữ hoa chữ thường
Cách khuyến nghị để hỗ trợ tính năng lọc phân biệt chữ hoa chữ thường với Prisma Client tùy thuộc vào nhà cung cấp cơ sở của bạn
Nhà cung cấp PostgreSQL
PostgreSQL sử dụng theo mặc định, có nghĩa là lọc phân biệt chữ hoa chữ thường. Để hỗ trợ lọc phân biệt chữ hoa chữ thường, hãy sử dụng thuộc tính
7 trên cơ sở từng trường
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
Sử dụng thuộc tính
8 trên bộ lọc như được hiển thị
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
const users = await prisma.user.findMany[{
where: {
email: {
endsWith: 'prisma.io',
mode: 'insensitive', // Default value: default
},
},
}]
Xem thêm.
Hãy cẩn thận
- Bạn không thể sử dụng tính năng lọc phân biệt chữ hoa chữ thường với đối chiếu C
- Các cột
9 luôn phân biệt chữ hoa chữ thường và không bị ảnh hưởng bởi
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
8
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
Hiệu suất
Nếu bạn chủ yếu dựa vào tính năng lọc phân biệt chữ hoa chữ thường, hãy xem xét việc tạo các chỉ mục trong cơ sở dữ liệu PostgreSQL để cải thiện hiệu suất
- Tạo chỉ mục biểu thức cho truy vấn Prisma Client sử dụng
1 hoặc
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
2
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
- Sử dụng mô-đun
3 cho các truy vấn Prisma Client sử dụng
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
4,
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
5,
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
6 [ánh xạ tới_______17_______7 /
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
8 trong PostgreSQL]
+----+-----------------------------------+
| id | email |
+----+-----------------------------------+
| 61 | alice@prisma.io |
| 49 | birgitte@prisma.io |
+----+-----------------------------------+
nhà cung cấp MySQL
MySQL sử dụng đối chiếu phân biệt chữ hoa chữ thường theo mặc định. Do đó, mặc định lọc bằng Prisma Client và MySQL không phân biệt chữ hoa chữ thường
Thuộc tính
7 không bắt buộc và do đó không có sẵn trong API ứng dụng khách Prisma đã tạo
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
Hãy cẩn thận
- Bạn phải sử dụng đối chiếu phân biệt chữ hoa chữ thường [
0] để hỗ trợ lọc phân biệt chữ hoa chữ thường. Prisma Client không hỗ trợ thuộc tính bộ lọc
const users = await prisma.user.findMany[{
where: {
email: {
contains: 'prisMa',
},
},
select: {
id: true,
name: true,
},
}]
8 cho nhà cung cấp MySQL
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
nhà cung cấp MongoDB
Để hỗ trợ lọc phân biệt chữ hoa chữ thường, hãy sử dụng thuộc tính
7 trên cơ sở từng trường
SELECT id, email FROM User WHERE email LIKE "%prisMa%"
const users = await prisma.user.findMany[{
where: {
email: {
endsWith: 'prisma.io',
mode: 'insensitive', // Default value: default
},
},
}]
MongoDB sử dụng quy tắc RegEx để lọc phân biệt chữ hoa chữ thường
nhà cung cấp SQLite
Theo mặc định, chỉ bản thân SQLite. Do đó, Prisma Client không hỗ trợ lọc phân biệt chữ hoa chữ thường với SQLite
Để bật hỗ trợ hạn chế [chỉ ASCII] cho lọc phân biệt chữ hoa chữ thường trên cơ sở từng cột, hãy sử dụng ____18_______3 khi bạn xác định các cột trong bảng
CREATE TABLE mytable [
sample TEXT COLLATE NOCASE /* collating sequence NOCASE */
];
Nhà cung cấp máy chủ Microsoft SQL
Microsoft SQL Server sử dụng đối chiếu phân biệt chữ hoa chữ thường theo mặc định. Do đó, lọc bằng Prisma Client và Microsoft SQL Server không phân biệt chữ hoa chữ thường theo mặc định
Trường hợp MySQL WHERE
Theo mặc định, tùy thuộc vào hệ điều hành và phân biệt chữ hoa chữ thường. Điều này có nghĩa là MySQL không phân biệt chữ hoa chữ thường trong Windows và macOS, trong khi nó phân biệt chữ hoa chữ thường trong hầu hết các hệ thống Linux . Tuy nhiên, bạn có thể thay đổi hành vi bằng cách thay đổi đối chiếu.Trường hợp mệnh đề WHERE của SQL
Các từ khóa SQL [SELECT, FROM, WHERE, v.v. ] phân biệt chữ hoa chữ thường , nhưng chúng thường được viết hoa. Tên bảng và cột phân biệt chữ hoa chữ thường trong một số cài đặt.Làm thế nào để thiết lập trường hợp
Khi tìm kiếm một phần chuỗi trong MySQL với LIKE, bạn sẽ khớp phân biệt chữ hoa chữ thường theo mặc định*. Nếu bạn muốn đối sánh phân biệt chữ hoa chữ thường, bạn có thể truyền giá trị dưới dạng nhị phân và sau đó thực hiện so sánh từng byte với. so sánh từng ký tự . Điều duy nhất bạn cần thêm vào truy vấn của mình là BINARY.Làm cách nào để tắt phân biệt chữ hoa chữ thường trong MySQL?
Bạn có thể tắt phân biệt chữ hoa chữ thường của tên bảng trong MySQL bằng cách đặt tham số Lower_case_table_names thành 1 . Cột, chỉ mục, quy trình được lưu trữ, tên sự kiện và bí danh cột không phân biệt chữ hoa chữ thường trên cả hai nền tảng.