2009-07-24 12 views
0

j'ai besoin de formater les données dans une colonne SQL qui est actuellement entré comme ceci:Mise en forme des données varchar dans un certain format

Z04000002003.7

La sortie souhaitée de ce serait:

Z04/000/002/003.7

Chaque fois qu'un utilisateur entre des données comme celle-ci Z04000002003.7. La prochaine fois que l'utilisateur ouvrira l'enregistrement, il l'aurait automatiquement formaté pour afficher Z04/000/002/003.7.

+0

Ce qui doit être stocké - les barres obliques ou pas les barres obliques? –

Répondre

1

Si vous voulez insérer les barres obliques sur INSERT ou UPDATE (lorsque la chaîne pénètre dans la base de données) ou SELECT, vous pouvez le faire en TSQL avec une expression de chaîne un peu maladroite:

SUBSTRING(thestring, 1, 3) + '/' + SUBSTRING(thestring, 4, 6) + '/' + ... 

et ainsi de suite , mais je suis d'accord avec d'autres répondants qu'il peut être une meilleure architecture pour effectuer de telles transformations "plus près de l'utilisateur" (dans l'interface utilisateur, ou peut-être dans une couche logique métier si ces barres font partie de la logique métier, mais semble plus probable).

+0

Le problème étant que si la mise à jour envoie via une version déjà formatée des données, vous y avez inséré des barres obliques supplémentaires, et donc au mauvais endroit. Si vous avez pré-testé pour vous assurer que les barres obliques sont absentes, votre expression est bonne. Il y a aussi la question de savoir ce qui se passe si l'utilisateur tape «Z0/40/00/00/20/03.7», ce qui devrait probablement être géré par l'interface utilisateur. –

+0

@Jonathan, d'accord, comme je l'ai mentionné - UI (peut-être, mais peu probable, la logique métier) peut être le meilleur endroit pour standardiser cette chaîne. Et j'ai dit que cette expression maladroite aide * SI * vous voulez insérer des barres obliques - si ce n'est pas le cas, alors clairement ce n'est pas le cas! -) –

+0

L'utilisateur n'ajoutera pas de barres obliques. Les barres obliques sont à des fins de récupération pure. –

2

Quand vous dites 'ouvrir le dossier', où cela se passe-t-il exactement? Une page Web? Faites le formatage le plus près possible de l'utilisateur - Couche d'interface utilisateur. Je ne pense pas que ce soit un problème SQL.

+0

Oui. Cela appartient à l'interface utilisateur. – shahkalpesh

+0

Faites-le lors de l'affichage de la valeur réelle. +1 – Will

+0

L'enregistrement est une valeur qu'un utilisateur ajoute via une application. –

0

deux options: 1.
Script mettre à jour tous les format lignes de l'ancien au nouveau standard
2. Comme n8wrl ledit format sur insert
3. Format sur le retour des données.

0

Les données doivent être formatées à l'entrée dans la base de données. L'interface utilisateur ne doit pas envoyer exactement ce qui a été tapé à la base de données. L'utilisateur n'a pas besoin de savoir que vous avez ajouté le/s. Si vous ne pouvez pas modifier l'entrée de données dans l'interface utilisateur (qui serait mon premier choix de l'endroit où le changer), alors écrivez un déclencheur pour traiter les données sur l'insertion ou mettre à jour au format correct. Assurez-vous que le déclencheur peut gérer plusieurs insertions de ligne ou mises à jour!