Si votre plan est de faire cela dans le cadre d'une requête, s'il vous plaît Ne le fais pas. faire cela (a) . Sérieusement, c'est un tueur de performance. Il peut y avoir des situations où vous ne vous souciez pas des performances (comme des travaux de migration ponctuels pour diviser les champs afin d'obtenir de meilleures performances à l'avenir), mais si vous le faites régulièrement pour autre chose qu'une base de données de type "mickey-mouse", vous gaspillez des ressources.
Si vous jamais Si vous devez traiter une partie seulement d'une colonne, c'est que la conception de votre base de données est défectueuse. Elle peut très bien fonctionner sur un carnet d'adresses personnel, une application de recettes ou une myriade d'autres petites bases de données, mais elle ne pourra pas être adaptée aux "vrais" systèmes.
Stockez les composants du nom dans des colonnes séparées. Il est presque toujours beaucoup plus rapide de joindre des colonnes ensemble avec une simple concaténation (lorsque vous avez besoin du nom complet) que de les séparer avec une recherche de caractères.
Si, pour une raison quelconque, vous ne pouvez pas diviser le champ, mettez au moins les colonnes supplémentaires et utilisez un déclencheur d'insertion/mise à jour pour les remplir. Bien que cela ne soit pas 3NF, cela garantira la cohérence des données et accélérera considérablement vos requêtes. Vous pouvez également vous assurer que les colonnes supplémentaires sont en minuscules (et indexées si vous effectuez des recherches sur celles-ci) afin de ne pas avoir à vous préoccuper des problèmes de casse.
Et, si vous ne pouvez même pas ajouter les colonnes et les déclencheurs, sachez (et faites savoir à votre client, si c'est pour un client) que ce n'est pas évolutif.
(a) Bien sûr, si votre intention est d'utiliser cette requête pour fixer le schéma afin que les noms soient placés dans des colonnes distinctes dans le fichier tableau plutôt que le requête, Je considère que c'est une utilisation valide. Mais je le répète, le faire dans la requête n'est pas vraiment une bonne idée.
7 votes
"Tous les enregistrements ont ce format "Prénom Nom" (sans guillemets et sans espace entre les deux)." ... miraculeusement... S'il vous plaît, s'il vous plaît n'oubliez pas les gens comme moi lorsque vous prenez des décisions concernant les bases de données. Trop souvent, je reçois des sites web qui me disent que mon nom de famille contient un mot de passe. illégal (sic) personnage... :(
0 votes
@StijndeWitt Vous avez raison en général, cependant il semble que cette base de données ne contienne pas votre nom, du moins pas sous sa forme officielle. Dans mon pays, les noms de famille sont écrits en premier, et je serais donc également "discriminé" dans ce tableau de données. Il suffit de voir ceci -->