Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyortir karakter string di MySQL

Mungkin sangat tidak efisien, tetapi tanpa memerlukan fungsi yang ditentukan pengguna:

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

EDIT

Saya harus mencari alternatif yang lebih baik sebelum tidur, kalau tidak saya tidak akan pernah tidur; jadi inilah alternatif yang jauh lebih bersih dan efisien.

Saya membuat tabel bernama huruf dengan satu kolom VARCHAR(1) bernama letter;lalu mengisi tabel itu dengan huruf A sampai 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');

lalu:

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. Jumlah parameter kueri MySQL cocok dengan argumen yang diteruskan untuk dieksekusi, tetapi Python tidak memunculkan semua argumen yang dikonversi

  2. Levenshtein:MySQL + PHP

  3. Jalankan kueri mentah pada Konektor Loopback MySQL

  4. Dalam keadaan apa Anda ingin Rails disetel untuk TIDAK terhubung kembali ke MYSQL?

  5. server MySQL intermiten telah hilang kesalahan