Frage

Ich versuche derzeit, alle Spalten einer bestimmten Tabelle aufzulisten und festzustellen, ob jede Spalte ohne Vorzeichen ist oder nicht.

Hier ein Beispiel meiner Testvorrichtung:

CREATE TABLE ttypes
(
    cbiginteger BIGINT UNSIGNED,
    cinteger INT UNSIGNED,
    csmallinteger SMALLINT UNSIGNED
) ENGINE = InnoDB;

Um alle Spalten einer bestimmten Tabelle aufzulisten, habe ich zwei Möglichkeiten gefunden:

SHOW FULL COLUMNS
FROM ttypes;

Nach dem Dokumentation, diese Abfrage gibt diese Felder zurück:Feld, Typ, Null, Standard, Extra & Kommentar.Mit keinem von ihnen kann ich feststellen, ob eine Spalte ohne Vorzeichen ist oder nicht.

Danach schaue ich mir die an information_schema.columns welches ist die Basistabelle, die von der SHOW COLUMNS Abfrage.

SELECT ...
FROM information_schema.columns
WHERE table_name = 'ttypes';

Leider kann ich in keinem der Ergebnisfelder feststellen, ob eine Spalte ohne Vorzeichen ist oder nicht.

War es hilfreich?

Lösung

Soweit ich das beurteilen kann, sind diese Attribute nur dort gespeichert COLUMN_TYPE in INFORMATION_SCHEMA.COLUMNS.

Das sollte in der Ausgabe von enthalten sein SHOW COLUMNS (innerhalb Type):

mysql> show columns from ttypes;
+---------------+----------------------+------+-----+---------+-------+
| Field         | Type                 | Null | Key | Default | Extra |
+---------------+----------------------+------+-----+---------+-------+
| cbiginteger   | bigint(20) unsigned  | YES  |     | NULL    |       |
| cinteger      | int(10) unsigned     | YES  |     | NULL    |       |
| csmallinteger | smallint(5) unsigned | YES  |     | NULL    |       |
+---------------+----------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Leider müssten Sie den Inhalt von analysieren Type und finde unsigned, oder nicht unsigned da drin - es enthält nichts für signierte Spalten.

Andere Tipps

Versuchen Sie diese Magie: generasacodicetagpre.

Ausgang generasacodicetagpre.

Um den Typ für alle Variablen in einer Tabelle zu ermitteln, können Sie eine solche Abfrage ausführen: generasacodicetagpre.

danach kann Ihr Typ einfach für eine bestimmte Variable (z. B. das Cinterger) mit einem solchen Abfrage festlegen: generasacodicetagpre.

Der obige Code gibt den Namen der Variablen zurück, die nur gesucht wird, wenn es nicht signiert ist.

endlich Ihre können Sie ein MySQL-Loop, ein Verfahren oder Ihre bevorzugte Skriptsprache verwenden, um dieses Ergebnis zu verwenden und / oder weitere Variablen durchsuchen.

Nur für den Fall, dass jemand das für den MySQL-Treiber in .NET stolpert, verwenden Sie mit GetsChema () wie ich, wie die nicht signierten Info verfügbar sind. generasacodicetagpre.

 Geben Sie hier eingeben Beschreibung hier eingeben

und dann:

 Geben Sie hier eingeben Beschreibung hier eingeben

Ich hoffe, dies ist nicht völlig außerhalb des Ortes für die Frage, und hilft jemandem, das programmgesteuerte Bestimmung des Zeichens zu ermitteln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top