Hướng dẫn mysql where uppercase - mysql nơi viết hoa

Trong bài này mình sẽ hướng dẫn cách sử dụng hàm UPPER trong MySQL thông qua cú pháp và ví dụ thực tế.

Hướng dẫn mysql where uppercase - mysql nơi viết hoa

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức.

1. Mô tả

Hàm UPPER chuyển đổi tất cả các ký tự trong chuỗi được chỉ định thành chữ hoa.

2. Cú pháp

Cú pháp của hàm UPPER trong MySQL là:

Trong đó:

Bài viết này được đăng tại [free tuts .net]

string: Chuỗi để chuyển đổi thành chữ hoa.

3. Version

Hàm UPPER có thể được sử dụng trong các phiên bản sau của MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23

4. Ví dụ

mysql> SELECT UPPER('Free Tuts Dot Net');
Ket qua: 'FREE TUTS DOT NET'
 
mysql> SELECT UPPER('  freetuts.net 123456  ');
Ket qua: '  FREETUTS.NET 123456  '

9.2.3 & nbsp; độ nhạy của trường hợp định danh

Trong MySQL, cơ sở dữ liệu tương ứng với các thư mục trong thư mục dữ liệu. Mỗi bảng trong cơ sở dữ liệu tương ứng với ít nhất một tệp trong thư mục cơ sở dữ liệu (và có thể nhiều hơn, tùy thuộc vào công cụ lưu trữ). Trình kích hoạt cũng tương ứng với các tập tin. Do đó, độ nhạy trường hợp của hệ điều hành cơ bản đóng một phần trong độ nhạy trường hợp của cơ sở dữ liệu, bảng và tên kích hoạt. Điều này có nghĩa là những cái tên như vậy không nhạy cảm với trường hợp trong Windows, nhưng nhạy cảm với trường hợp trong hầu hết các giống UNIX. Một ngoại lệ đáng chú ý là macOS, dựa trên UNIX nhưng sử dụng loại hệ thống tệp mặc định (HFS+) không nhạy cảm trường hợp. Tuy nhiên, MacOS cũng hỗ trợ khối lượng UFS, có tính nhạy cảm với trường hợp giống như trên bất kỳ Unix nào. Xem Phần & NBSP; 1.7.1, Phần mở rộng MySQL cho SQL tiêu chuẩn. Biến hệ thống

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1 cũng ảnh hưởng đến cách máy chủ xử lý độ nhạy của trường hợp định danh, như được mô tả sau trong phần này.

Ghi chú

Mặc dù cơ sở dữ liệu, bảng và tên kích hoạt không nhạy cảm với trường hợp trên một số nền tảng, bạn không nên đề cập đến một trong số này bằng cách sử dụng các trường hợp khác nhau trong cùng một câu lệnh. Tuyên bố sau đây sẽ không hoạt động vì nó đề cập đến một bảng cả là

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
2 và AS
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
3:

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;

Phân vùng, phân vùng, cột, chỉ mục, thường xuyên được lưu trữ, sự kiện và tên nhóm tài nguyên không nhạy cảm với bất kỳ nền tảng nào, cũng không phải là bí danh cột.

Tuy nhiên, tên của các nhóm logfile là nhạy cảm trường hợp. Điều này khác với SQL tiêu chuẩn.

Theo mặc định, các bí danh bảng có tính nhạy cảm với trường hợp trên Unix, nhưng không phải như vậy trên Windows hoặc MacOS. Tuyên bố sau đây sẽ không hoạt động trên UNIX, bởi vì nó đề cập đến bí danh cả là

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
4 và AS
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
5:

mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;

Tuy nhiên, câu lệnh tương tự này được cho phép trên Windows. Để tránh các vấn đề gây ra bởi sự khác biệt như vậy, tốt nhất là áp dụng một quy ước nhất quán, chẳng hạn như luôn luôn tạo và đề cập đến cơ sở dữ liệu và bảng sử dụng tên chữ thường. Công ước này được khuyến nghị cho tính di động tối đa và dễ sử dụng.

Cách các tên bảng và cơ sở dữ liệu được lưu trữ trên đĩa và được sử dụng trong MySQL bị ảnh hưởng bởi biến hệ thống

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1.
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1 có thể lấy các giá trị được hiển thị trong bảng sau. Biến này không ảnh hưởng đến độ nhạy trường hợp của số nhận dạng kích hoạt. Trên Unix, giá trị mặc định của
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1 là 0. Trên Windows, giá trị mặc định là 1. Trên macOS, giá trị mặc định là 2.not affect case sensitivity of trigger identifiers. On Unix, the default value of
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1 is 0. On Windows, the default value is 1. On macOS, the default value is 2.

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1 chỉ có thể được cấu hình khi khởi tạo máy chủ. Thay đổi cài đặt
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1 sau khi máy chủ được khởi tạo bị cấm.

Giá trịNghĩa
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
1
Tên bảng và cơ sở dữ liệu được lưu trữ trên đĩa bằng cách sử dụng Lettercase được chỉ định trong câu lệnh
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
2 hoặc
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
3. So sánh tên là nhạy cảm trường hợp. Bạn không nên đặt biến này thành 0 nếu bạn đang chạy MySQL trên một hệ thống có tên tệp không phân biệt chữ hoa chữ thường (như Windows hoặc MacOS). Nếu bạn buộc biến này thành 0 với
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
4 trên hệ thống tệp không phân biệt chữ hoa chữ thường và truy cập các tên bảng
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
5 bằng cách sử dụng các bản ngữ khác nhau, tham nhũng chỉ mục có thể dẫn đến.not set this variable to 0 if you are running MySQL on a system that has case-insensitive file names (such as Windows or macOS). If you force this variable to 0 with
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
4 on a case-insensitive file system and access
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
5 tablenames using different lettercases, index corruption may result.
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
6
Tên bảng được lưu trữ bằng chữ thường trên đĩa và so sánh tên không nhạy cảm trường hợp. MySQL chuyển đổi tất cả các tên bảng thành chữ thường khi lưu trữ và tra cứu. Hành vi này cũng áp dụng cho tên cơ sở dữ liệu và bí danh bảng.
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
7
Tên bảng và cơ sở dữ liệu được lưu trữ trên đĩa bằng cách sử dụng Lettercase được chỉ định trong câu lệnh
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
2 hoặc
mysql> SELECT col_name FROM tbl_name AS a
       WHERE a.col_name = 1 OR A.col_name = 2;
3, nhưng MySQL chuyển đổi chúng thành chữ thường khi tra cứu. So sánh tên không nhạy cảm với trường hợp. Điều này chỉ hoạt động trên các hệ thống tệp không nhạy cảm với trường hợp! UPPER0 Tên bảng và tên xem được lưu trữ bằng chữ thường, như đối với UPPER1.only on file systems that are not case-sensitive! UPPER0 table names and view names are stored in lowercase, as for UPPER1.

Nếu bạn đang sử dụng MySQL trên một nền tảng, bạn thường không phải sử dụng cài đặt

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
1 khác với mặc định. Tuy nhiên, bạn có thể gặp khó khăn nếu bạn muốn chuyển bảng giữa các nền tảng khác nhau về độ nhạy của trường hợp hệ thống tệp. Ví dụ: trên Unix, bạn có thể có hai bảng khác nhau có tên
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
2 và
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
3, nhưng trên Windows, hai tên này được coi là giống hệt nhau. Để tránh các vấn đề truyền dữ liệu phát sinh từ thư của cơ sở dữ liệu hoặc tên bảng, bạn có hai tùy chọn:

  • Sử dụng UPPER1 trên tất cả các hệ thống. Nhược điểm chính với điều này là khi bạn sử dụng UPPER6 hoặc UPPER7, bạn không thấy tên trong Lettercase ban đầu của họ.

  • Sử dụng UPPER8 trên Unix và UPPER9 trên Windows. Điều này bảo tồn thư của cơ sở dữ liệu và tên bảng. Nhược điểm của điều này là bạn phải đảm bảo rằng các câu lệnh của bạn luôn đề cập đến cơ sở dữ liệu và tên bảng của bạn với chữ cái chính xác trên Windows. Nếu bạn chuyển các câu lệnh của mình sang Unix, nơi Lettercase có ý nghĩa, chúng không hoạt động nếu Lettercase không chính xác.

    Ngoại lệ: Nếu bạn đang sử dụng bảng UPPER0 và bạn đang cố gắng tránh các vấn đề truyền dữ liệu này, bạn nên sử dụng UPPER1 trên tất cả các nền tảng để buộc các tên được chuyển đổi thành chữ thường.: If you are using UPPER0 tables and you are trying to avoid these data transfer problems, you should use UPPER1 on all platforms to force names to be converted to lowercase.

Tên đối tượng có thể được coi là trùng lặp nếu các dạng viết hoa của chúng bằng nhau theo một đối chiếu nhị phân. Điều đó đúng với tên của con trỏ, điều kiện, quy trình, chức năng, điểm lưu, các tham số thường xuyên được lưu trữ, các biến cục bộ chương trình được lưu trữ và plugin. Nó không đúng với tên của các cột, các ràng buộc, cơ sở dữ liệu, phân vùng, câu lệnh được chuẩn bị với MySQL2, bảng, trình kích hoạt, người dùng và các biến do người dùng xác định.

Độ nhạy của trường hợp hệ thống tệp có thể ảnh hưởng đến các tìm kiếm trong các cột chuỗi của bảng MySQL3. Để biết thêm thông tin, xem Phần & NBSP; 10.8.7, Sử dụng đối chiếu trong thông tin_schema tìm kiếm.