Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :requête pour la liste des options disponibles pour SET

Maintenant, c'est tout simplement flippant, mais c'est uniquement MySQL et ça marche !

SELECT TRIM("'" FROM SUBSTRING_INDEX(SUBSTRING_INDEX(
   (SELECT TRIM(')' FROM SUBSTR(column_type, 5)) FROM information_schema.columns 
    WHERE table_name = 'some_table' AND column_name = 'some_column'),
',', @r:[email protected]+1), ',', -1)) AS item
FROM (SELECT @r:=0) deriv1,
(SELECT ID FROM information_schema.COLLATIONS) deriv2
HAVING @r <= 
   (SELECT LENGTH(column_type) - LENGTH(REPLACE(column_type, ',', ''))
    FROM information_schema.columns
    WHERE table_name = 'some_table' AND column_name = 'some_column');

Remplacez simplement "une_table" et "une_colonne" pour votre table/colonne spécifique, et voyez la magie !

Vous verrez une utilisation étrange de "information_schema.COLLATIONS" - c'est parce que nous avons besoin d'une table ici - n'importe quelle table - contenant au moins N lignes , où N est le nombre d'éléments de votre ensemble.