Dans MySQL, comment puis-je insérer 1 lors de la chaîne de valeur est 'true', 0 si faux, tout en préservant les valeurs null
Je suis en utilisant un INSERT
requête qui SELECT
s à partir d'un texte brut de base de données de plus de requête de base de données conviviale. Ce qui suit est énormément simplifié pour éviter toute confusion avec des informations inutiles, si j'ai simplifié trop loin pour plus de clarté, s'il vous plaît laissez-moi savoir et je vais modifier.
De la Source de données s'affiche comme suit:
| id (integer) | SomeCol (varchar) | BooleanCol (varchar) |
----------------------------------------------------------------------------
| 1 | 'String Data' | 'true' |
| 2 | 'Other Data' | 'false' |
La table cible doit regarder comme suit après mon INSERT
requête:
| id (integer) | SomeCol (varchar) | BooleanCol (tinyint(1)) |
-------------------------------------------------------------------------------
| 1 | 'String Data' | 1 |
| 2 | 'Other Data' | 0 |
Je suis à la recherche de quelque chose qui fonctionne plus ou moins comme ça, à l'emprunt d'un peu de syntaxe java:
INSERT INTO target(SomeCol, BooleanCol)
SELECT SomeCol, (BooleanCol IS NOT NULL ? (BooleanCol == 'true' ? 1 : 0) : null)
FROM source
Noter que la syntaxe java présenté comme un exemple de ce que je veux est destiné à préserver null
s en tant que de besoin.
Aussi, alors je suis ici, si vous savez comment SELECT
l'heure actuelle le timbre de MySQL, qui serait également utile.
OriginalL'auteur StormeHawke | 2013-03-28
Vous devez vous connecter pour publier un commentaire.
Mysql a un SI de l'opérateur qui est semblable à la ?: opérateur dans la plupart des langues.
IF(cond, val_if_true, val_if_false)
CASE WHEN
.Oui, ce serait trop de travail.
Parfait, merci
Fonctionné pour moi aussi bien dans la mise à JOUR.
OriginalL'auteur Vatev