Fonction SQL
Résolu/Fermé
alexmilano
Messages postés
422
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
-
5 juin 2008 à 16:08
alexmilano Messages postés 422 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 30 novembre 2017 - 25 juil. 2008 à 13:24
alexmilano Messages postés 422 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 30 novembre 2017 - 25 juil. 2008 à 13:24
A voir également:
- Fonction SQL
- Fonction si et - Guide
- Récupération serveur sql - Télécharger - Gestion de données
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction trier excel - Guide
5 réponses
alexmilano
Messages postés
422
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
27
5 juin 2008 à 16:31
5 juin 2008 à 16:31
j'ai commencé comme ça si ça peut cous aider, même si je suis pas du tout sur de mon truc ^^
CREATE FUNCTION ADDSPACE
AS
BEGIN
-- ADDSPACE(@CHAMP, @NBR_CAR)
DECLARE @CHAMP nvarchar(MAX), @NBR_CAR int
BEGIN
SELECT ISNULL(@CHAMP,''), @NBR_CAR
IF @NBR_CAR < LEN(@CHAMP)
BEGIN
SET @CHAMP = LEFT(@CHAMP, @NBR_CAR)
END
ELSE
BEGIN
SET @CHAMP = @CHAMP +
CREATE FUNCTION ADDSPACE
AS
BEGIN
-- ADDSPACE(@CHAMP, @NBR_CAR)
DECLARE @CHAMP nvarchar(MAX), @NBR_CAR int
BEGIN
SELECT ISNULL(@CHAMP,''), @NBR_CAR
IF @NBR_CAR < LEN(@CHAMP)
BEGIN
SET @CHAMP = LEFT(@CHAMP, @NBR_CAR)
END
ELSE
BEGIN
SET @CHAMP = @CHAMP +
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
5 juin 2008 à 16:20
5 juin 2008 à 16:20
Bonjour.
J'ai du mal à saisir l'intérêt de ce genre de fonctions pour du SQL.
Tu veux en faire quoi ? Si tu rajoutes des espaces avant/après le nombre, tu vas stocker une chaîne de caractères, et tu perds une bonne partie de l'intérêt de la base de données.
A la limite, c'est le genre de chose que tu peux faire à l'affichage, mais surtout pas dans la BDD... Et pour l'affichage, ça dépend du langage de l'interface.
J'ai du mal à saisir l'intérêt de ce genre de fonctions pour du SQL.
Tu veux en faire quoi ? Si tu rajoutes des espaces avant/après le nombre, tu vas stocker une chaîne de caractères, et tu perds une bonne partie de l'intérêt de la base de données.
A la limite, c'est le genre de chose que tu peux faire à l'affichage, mais surtout pas dans la BDD... Et pour l'affichage, ça dépend du langage de l'interface.
alexmilano
Messages postés
422
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
27
5 juin 2008 à 16:28
5 juin 2008 à 16:28
C'est pour ecrire mon resultat dans un fichier texte, notepad, pour que tout soit aligné, cela sera intégré dans un autre logiciel qui prendra les textes sur un certain nombre de caractères, en voila l'intérêt ...
Il faut rajouter des espaces après la valeur du champ, et si la longueur de cette valeur dépasse ce nombre de caractere, il faut prendre juste la partie gauche de la valeur ...
Il faut rajouter des espaces après la valeur du champ, et si la longueur de cette valeur dépasse ce nombre de caractere, il faut prendre juste la partie gauche de la valeur ...
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
5 juin 2008 à 17:46
5 juin 2008 à 17:46
Tu programmes en quel langage ?
alexmilano
Messages postés
422
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
27
6 juin 2008 à 09:15
6 juin 2008 à 09:15
c'est du SQL sur SQL server 2005 ...
alexmilano
Messages postés
422
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
27
6 juin 2008 à 14:58
6 juin 2008 à 14:58
solution :
ALTER FUNCTION ADDSPACE (@CHAMP nvarchar(MAX), @NBR_CAR int ) RETURNS nvarchar(MAX)
AS
BEGIN
-- ADDSPACE(@CHAMP, @NBR_CAR)
SET @CHAMP = LEFT(ISNULL(@CHAMP,''), @NBR_CAR)
WHILE LEN(@CHAMP) < @NBR_CAR
BEGIN
SET @CHAMP = @CHAMP + 'µ'
END
RETURN REPLACE(@CHAMP, 'µ', ' ')
END
ALTER FUNCTION ADDSPACE (@CHAMP nvarchar(MAX), @NBR_CAR int ) RETURNS nvarchar(MAX)
AS
BEGIN
-- ADDSPACE(@CHAMP, @NBR_CAR)
SET @CHAMP = LEFT(ISNULL(@CHAMP,''), @NBR_CAR)
WHILE LEN(@CHAMP) < @NBR_CAR
BEGIN
SET @CHAMP = @CHAMP + 'µ'
END
RETURN REPLACE(@CHAMP, 'µ', ' ')
END
bonjour
pourquoi ne pas utiliser les fonctions standards LPAD ou RPAD pour des alphanumériques , ou un FORMAT pour les champs numériques ?
ex :
RPAD('TOTO',10) = 'TOTO '
LPAD('TOTO',10) = ' TOTO'
on peut appliquer RPAD ou LPAD à TO_CHAR( nombre)
ou to_char(nombre,'9999999999') : to_char(123,'9999999999') = ' 123'
pourquoi ne pas utiliser les fonctions standards LPAD ou RPAD pour des alphanumériques , ou un FORMAT pour les champs numériques ?
ex :
RPAD('TOTO',10) = 'TOTO '
LPAD('TOTO',10) = ' TOTO'
on peut appliquer RPAD ou LPAD à TO_CHAR( nombre)
ou to_char(nombre,'9999999999') : to_char(123,'9999999999') = ' 123'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
alexmilano
Messages postés
422
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
27
25 juil. 2008 à 13:24
25 juil. 2008 à 13:24
CE NE SONT PAS DES FONCTIONS SQL ... si ??
5 juin 2008 à 17:42
ALTER FUNCTION ADDSPACE (@CHAMP nvarchar(MAX), @NBR_CAR int ) RETURNS nvarchar(MAX)
AS
BEGIN
-- ADDSPACE(@CHAMP, @NBR_CAR)
SET @CHAMP = LEFT(ISNULL(@CHAMP,''), @NBR_CAR)
WHILE LEN(@CHAMP) < @NBR_CAR
BEGIN
SET @CHAMP = @CHAMP + ' '
END
RETURN @CHAMP
END
mais j'ai l'impression que sa boucle a l'infini ... pk ???
Merci de votre aide