-2
votes

Espaces de rembourrage dans SQL

Comment ajouter des espaces dans des données lorsque la longueur des données est inconnue?

Lors de la sélection des données de caractères, j'essaie de caresser les données avec des espaces afin que la longueur de ce que je revienne est la même pour toutes les lignes. Par exemple, la longueur devrait rester 15 toujours.

Cela ira en fin de compte dans un rapport contenant toutes les colonnes de longueur fixes, de sorte que la taille des données renvoyées pour chaque champ doit être cohérente.

Il doit y avoir un rembourrage avec des espaces.

sql

4 commentaires

Que suggère le manuel


Voir Stackoverflow.com / Questions / 56501717 / ... de plus tôt aujourd'hui.


[champ] + espace (15 len ([champ])))


Roger Clerkwell: Il donne une exception Null Pointer pour les valeurs vierges


3 Réponses :


0
votes
isnull([field],'')+SPACE(15-LEN(isnull([field],'')))

2 commentaires

Ne faites que cela pour sélectionner la sortie, ne mettez pas à jour une colonne de table avec des espaces.


Veuillez également consulter Shawn Link au-dessus duquel utilise: laissé (isnull ([champ], '') + réplique ('', 15), 15)



1
votes

pour SQL Server, vous pouvez faire comme suit:

CREATE TABLE T(
  Str VARCHAR(15)
);

INSERT INTO T VALUES
('abc'), --3 chars
('abcdefg'), --7 chars
('abcrfhtkidleoky'); -- 15 chars

SELECT *, LENGTH(Str) LN
FROM T;

UPDATE T
SET Str = Str || REPLACE(HEX(ZEROBLOB(15-LENGTH(Str))), '00', ' ')
WHERE LENGTH(Str) < 15;

SELECT *, LENGTH(Str) LN
FROM T;


3 commentaires

Salut Sami, curieux Pourquoi vous mettriez jamais à jour une table avec des espaces vides lorsque vous pouvez ajouter l'espacement lorsque vous sélectionnez?


C'est l'OP qui veut le faire, pas moi, je fais juste ce qu'il demande. D'accord C'est une idée horrible et n'a aucun sens mais ... c'est son choix.


Ok, je pensais qu'il avait juste besoin de ne pas sélectionner non pas à jour, ouais d'accord avec vous n'a aucun sens sur une mise à jour.



3
votes

Dans n'importe quelle base de données, la conversion à un Char () devrait fonctionner: xxx

char () type est une longueur fixe, rembourré avec des espaces.

La méthode la plus typique serait de caresser les valeurs avec des espaces. La méthode exacte pour cela varie selon la base de données.


1 commentaires

Très soigné et simple :-)