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

Sắp xếp các ký tự chuỗi trong MySQL

Có thể là không hiệu quả cao, nhưng không cần bất kỳ chức năng nào do người dùng xác định:

SELECT GROUP_CONCAT(LETTER SEPARATOR '') AS ReOrderedLetters
  FROM ( SELECT 'A' as LETTER FROM <table> WHERE UPPER(`name`) like '%A%'
         UNION ALL
         SELECT 'B' as LETTER FROM <table> WHERE UPPER(`name`) like '%B%'
         UNION ALL
         SELECT 'C' as LETTER FROM <table> WHERE UPPER(`name`) like '%C%'
         UNION ALL
         SELECT 'D' as LETTER FROM <table> WHERE UPPER(`name`) like '%D%'
         ...
         UNION ALL
         SELECT 'Y' as LETTER FROM <table> WHERE UPPER(`name`) like '%Y%'
         UNION ALL
         SELECT 'Z' as LETTER FROM <table> WHERE UPPER(`name`) like '%Z%'
       ) alpha

CHỈNH SỬA

Tôi phải nghĩ ra một giải pháp thay thế tốt hơn trước khi đi ngủ, nếu không thì tôi sẽ không bao giờ ngủ được; vì vậy đây là một giải pháp thay thế sạch hơn và hiệu quả hơn nhiều.

Tôi đã tạo một bảng có tên là các chữ cái với một cột duy nhất của VARCHAR (1) được gọi là chữ cái; sau đó điền bảng đó với các chữ cái từ A đến Z

CREATE TABLE IF NOT EXISTS `letters` (
   `letter` varchar(1) NOT NULL,
   PRIMARY KEY (`letter`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `letters` (`letter`) VALUES
('A'),('B'),('C'),('D'),('E'),('F'),('G'),('H'),('I'),('J'),('K'),('L'),('M'),
('N'),('O'),('P'),('Q'),('R'),('S'),('T'),('U'),('V'),('W'),('X'),('Y'),('Z');

sau đó:

select U.`name`,
       GROUP_CONCAT(L.`letter` 
           ORDER BY L.`letter` ASC 
          SEPARATOR '') AS ReOrderedLetters 
  FROM `users` U 
  LEFT JOIN `letters` L ON POSITION(L.`letter` IN UPPER(U.`name`)) > 0
 GROUP BY U.`name`


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều khoản LIMIT thay thế trong JPQL là gì?

  2. Làm cách nào để chỉ chọn một thế hệ của cây phân cấp bằng cách sử dụng quan hệ con của bảng cha với SQL?

  3. MySQL bằng Python:UnicodeEncodeError:'ascii'

  4. Tạo ID dài duy nhất cho một chế độ xem trong MySql

  5. Cách lấy id được chèn bằng Spring Jdbctemplate.update (String sql, obj ... args)