SQL Server fonction Format()
J'ai une requête en cours dans une base de données MS Access qui utilise la fonction Format() pour convertir un nombre (entier long) à une chaîne.
La table a été modifiée et déplacée vers SQL server. Le domaine j'ai besoin de convertir n'est pas un champ de money que j'ai besoin de tout laisser tomber après la période et la convertir en une chaîne de caractères avec un certain nombre de caractères.
Des Données De L'Échantillon:
Amount
228.00000
1896.00000
6411.00000
317.00000
4830.00000
898.00000
1778.00000
1308.00000
45139.00000
424.00000
Cours de MS Access requête:
SELECT Format(CallAmt],"000000000000000") AS Amount
FROM Fed
Nouvelle requête:
SELECT Convert(varchar(15), FedAmount)
FROM Fed.SM_T_Call
Je voudrais que mon Produit final ressemble à ceci:
Amount
000000000000228
000000000001896
000000000006411
000000000000317
000000000004830
000000000000898
000000000001778
000000000001308
000000000045139
000000000000424
Je ne sais pas comment tout laisser tomber après la période et ajouter les zéros supplémentaires à mon résultat. Quelqu'un peut-il offrir toute l'assistance?
- Ce type de données est FedAmount dans SQL Server? Vous avez dit que ce n'est pas un champ de money, quel est-il dans SQL Server après qu'il a été déplacé
- Il serait utile si vous modifiez votre question et de montrer comment vous souhaitez que le résultat final ressemble.
- yep, besoin de la sortie finale. Pas tous d'entre nous embêter avec/utiliser VBA.
- my bad, j'ai édité pour ajouter mon produit final. désolé.
- User de mon DROIT de solution pour avoir des places avec un CAST en int
- Cela me semble une présentation de la couche problème, pas un SQL problème, donc si votre front-end est encore dans Access, vous devriez être en mesure de continuer à utiliser le Format().
- front-end ne va plus être dans l'Accès. Nous sommes réellement l'exportation des données dans un fichier texte et il doit être dans un certain format.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser:
RIGHT('000000000000000' + CAST(MyNumber AS varchar(15)), 15)
d'avoir des zérosOu de l'ensemble de la ci-dessus: mais nous ne savons pas quelle sortie vous voulez...
Modifier, après la mise à jour
Édition, Octobre 2011
SQL Server 2012 (Denali) sera fonction Format.
De modifier, d'après le commentaire par onedaywhen
REPLICATE('0', 15)
serait de rendre votre code plus facile à lire.Vous pouvez utiliser le type de données décimal:
Et puis si vous voulez qu'il soit un varchar après que:
Ou dans un select, il pourrait ressembler à ceci:
Pourrait réellement fonctionner?
@gbn répondrais est un bon pour SQL Server et utilise des fonctions
RIGHT()
etREPLICATE()
.De noter que vous avez déjà eu à port cette fois, les éléments suivants peuvent être un plus version portable car il utilise la Norme SQL fonctions. Remarque l'opérateur de concaténation de chaîne dans le Standard SQL est
||
, alors que SQL Server utilise+
la même chose (et MS prétend toujours qu'il est conforme, allez comprendre). Toutefois, le projet de code de marque encore fortement sur la portabilité de l'échelle, car la transformation de`||
à+
est trivial: