|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" d'une table "models" pour que les entrées soit mise à jour de la façon suivante : 1 ère lettre en capitale (uppercase) et le reste en petit (lowercase) . (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: marie cécile dodu qui doit devenir Marie Cécile Dodu) Merci de votre aide. Christophe |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Bonjour Christophe,
SQL n'est pas le langage de prédilection pour manipuler des chaînes de caractères, un langage de programmation sera plus adapté. De plus, ce genre de traitement est à implémenter dans une couche métier, bien avant d'être au sein de SQL Server. Cela dit, je ne connais pas les contraintes donc je vais proposer d'autres idées : -il est aussi possible de définir ses propres types (UDT) développés en ..NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server 2005 avec la SQLCLR. -si ce traitement doit être effectué une seule fois en mode batch, vous pouvez aussi regarder du coté des Procédures Stockées en code managé. J'espère avoir répondu à la question... -- Jean-Pierre Riehl http://blog.djeepy1.net http://www.bewise.fr "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... > Bonjour, > > J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" d'une > table "models" pour que les entrées soit mise à jour de la façon suivante > : > > 1 ère lettre en capitale (uppercase) et le reste en petit (lowercase) . > (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: marie > cécile dodu qui doit devenir Marie Cécile Dodu) > > Merci de votre aide. > > Christophe > |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Bonjour et merci de votre réponse,
La base de donnée se trouve sur un serveur SQL2000 entreprise. En ne prenant pas en considération les noms composé, mais juste le fait de mettre les premieres lettres en capital et le reste en petit, est ce que cela pourrait faciliter la tache pour creer une requete ? A vrai dire je ne suis pas developpeur du tout mais manager du support client, le developpeur est actuellement en vacances, c'est pourquoi j'essai de me debrouiller tant bien que mal a trouver une solution. Je pense que cela doit etre possible , j'ai effectuer des recherche sur le net, et trouver quelques approches mais rien de concluant malheureusement. En tout cas merci encore de votre réponse. Christophe "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... > Bonjour Christophe, > > SQL n'est pas le langage de prédilection pour manipuler des chaînes de > caractères, un langage de programmation sera plus adapté. De plus, ce > genre de traitement est à implémenter dans une couche métier, bien avant > d'être au sein de SQL Server. Cela dit, je ne connais pas les contraintes > donc je vais proposer d'autres idées : > -il est aussi possible de définir ses propres types (UDT) développés en > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server 2005 > avec la SQLCLR. > -si ce traitement doit être effectué une seule fois en mode batch, vous > pouvez aussi regarder du coté des Procédures Stockées en code managé. > > J'espère avoir répondu à la question... > > -- > Jean-Pierre Riehl > http://blog.djeepy1.net > http://www.bewise.fr > > > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >> Bonjour, >> >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" d'une >> table "models" pour que les entrées soit mise à jour de la façon suivante >> : >> >> 1 ère lettre en capitale (uppercase) et le reste en petit (lowercase) . >> (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: >> marie cécile dodu qui doit devenir Marie Cécile Dodu) >> >> Merci de votre aide. >> >> Christophe >> > |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) Exécute ce script sur ta base : CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) RETURNS VARCHAR(8000) AS BEGIN IF @NAME IS NULL RETURN NULL IF LEN(@NAME) = 1 RETURN UPPER(@NAME) RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) END GO Il te suffit ensuite de lancer une requête du type : SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM TATABLE Pour la suite je te conseille d'attendre le retour de congés du développeur :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter les espaces et les tirets). Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement des requêtes. HTH "christophe cDs" a écrit : > Bonjour et merci de votre réponse, > > La base de donnée se trouve sur un serveur SQL2000 entreprise. > En ne prenant pas en considération les noms composé, mais juste le fait de > mettre les premieres lettres en capital et le reste en petit, est ce que > cela pourrait faciliter la tache pour creer une requete ? > > A vrai dire je ne suis pas developpeur du tout mais manager du support > client, le developpeur est actuellement en vacances, c'est pourquoi j'essai > de me debrouiller tant bien que mal a trouver une solution. > > Je pense que cela doit etre possible , j'ai effectuer des recherche sur le > net, et trouver quelques approches mais rien de concluant malheureusement. > > En tout cas merci encore de votre réponse. > > Christophe > > > > "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le > message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... > > Bonjour Christophe, > > > > SQL n'est pas le langage de prédilection pour manipuler des chaînes de > > caractères, un langage de programmation sera plus adapté. De plus, ce > > genre de traitement est à implémenter dans une couche métier, bien avant > > d'être au sein de SQL Server. Cela dit, je ne connais pas les contraintes > > donc je vais proposer d'autres idées : > > -il est aussi possible de définir ses propres types (UDT) développés en > > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server 2005 > > avec la SQLCLR. > > -si ce traitement doit être effectué une seule fois en mode batch, vous > > pouvez aussi regarder du coté des Procédures Stockées en code managé. > > > > J'espère avoir répondu à la question... > > > > -- > > Jean-Pierre Riehl > > http://blog.djeepy1.net > > http://www.bewise.fr > > > > > > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message > > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... > >> Bonjour, > >> > >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" d'une > >> table "models" pour que les entrées soit mise à jour de la façon suivante > >> : > >> > >> 1 ère lettre en capitale (uppercase) et le reste en petit (lowercase) . > >> (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: > >> marie cécile dodu qui doit devenir Marie Cécile Dodu) > >> > >> Merci de votre aide. > >> > >> Christophe > >> > > > > > |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Bonjour et merci,
Je viens de tester votre solution, lorsque exécute le script pour créer la fonction, cela passe sans problème, mais lorsque je passe le deuxième script en mettant le nom de ma table, j'ai une erreur qui me dit qu il ne reconnaît pas FN_FIRST_CAP comme étant une fonction. Server: Msg 195, Level 15, State 10, Line 1 'FN_FIRST_CAP' is not a recognized function name. Une idée de pourquoi il ne la reconnaît pas alors que lors de la création je n'ai pas eu d'erreur. Merci encore. Christophe cDs "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de news: C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... > Bonjour, > > Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta > démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) > > Exécute ce script sur ta base : > > CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) > RETURNS VARCHAR(8000) > AS > BEGIN > IF @NAME IS NULL > RETURN NULL > IF LEN(@NAME) = 1 > RETURN UPPER(@NAME) > RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + > LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) > END > GO > > Il te suffit ensuite de lancer une requête du type : > SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM > TATABLE > > Pour la suite je te conseille d'attendre le retour de congés du > développeur > :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter les > espaces et les tirets). > Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement des > requêtes. > > HTH > > > "christophe cDs" a écrit : > >> Bonjour et merci de votre réponse, >> >> La base de donnée se trouve sur un serveur SQL2000 entreprise. >> En ne prenant pas en considération les noms composé, mais juste le fait >> de >> mettre les premieres lettres en capital et le reste en petit, est ce que >> cela pourrait faciliter la tache pour creer une requete ? >> >> A vrai dire je ne suis pas developpeur du tout mais manager du support >> client, le developpeur est actuellement en vacances, c'est pourquoi >> j'essai >> de me debrouiller tant bien que mal a trouver une solution. >> >> Je pense que cela doit etre possible , j'ai effectuer des recherche sur >> le >> net, et trouver quelques approches mais rien de concluant >> malheureusement. >> >> En tout cas merci encore de votre réponse. >> >> Christophe >> >> >> >> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le >> message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >> > Bonjour Christophe, >> > >> > SQL n'est pas le langage de prédilection pour manipuler des chaînes de >> > caractères, un langage de programmation sera plus adapté. De plus, ce >> > genre de traitement est à implémenter dans une couche métier, bien >> > avant >> > d'être au sein de SQL Server. Cela dit, je ne connais pas les >> > contraintes >> > donc je vais proposer d'autres idées : >> > -il est aussi possible de définir ses propres types (UDT) développés >> > en >> > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server >> > 2005 >> > avec la SQLCLR. >> > -si ce traitement doit être effectué une seule fois en mode batch, >> > vous >> > pouvez aussi regarder du coté des Procédures Stockées en code managé. >> > >> > J'espère avoir répondu à la question... >> > >> > -- >> > Jean-Pierre Riehl >> > http://blog.djeepy1.net >> > http://www.bewise.fr >> > >> > >> > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message >> > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >> >> Bonjour, >> >> >> >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" >> >> d'une >> >> table "models" pour que les entrées soit mise à jour de la façon >> >> suivante >> >> : >> >> >> >> 1 ère lettre en capitale (uppercase) et le reste en petit (lowercase) >> >> . >> >> (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: >> >> marie cécile dodu qui doit devenir Marie Cécile Dodu) >> >> >> >> Merci de votre aide. >> >> >> >> Christophe >> >> >> > >> >> >> |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Alors , je pense avoir trouvé la solution.
J'ai récupéré une partie de la fonction et j'ai modifier un script que j'avais trouver sur un site. Voila donc le script que j'ai fait, le résultat dans la table est correct. Si vous pensez que cela n'est pas bon dites le moi, j'ai fait le test sur un base de test ( par sécurité). UPDATE models SET prenom = (UPPER(SUBSTRING(prenom, 1, 1)) + LOWER(SUBSTRING(prenom, 2, LEN(prenom) -1))) Celui ci fonction pour une colonne spécifique mais cela ne me pose pas de problème de le lancer deux fois en modifiant les champs. merci. "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le message de news: urx24RE0HHA.5644@TK2MSFTNGP05.phx.gbl... > Bonjour et merci, > > Je viens de tester votre solution, lorsque exécute le script pour créer la > fonction, cela passe sans problème, mais lorsque je passe le deuxième > script en mettant le nom de ma table, j'ai une erreur qui me dit qu il ne > reconnaît pas FN_FIRST_CAP comme étant une fonction. > > Server: Msg 195, Level 15, State 10, Line 1 > 'FN_FIRST_CAP' is not a recognized function name. > > Une idée de pourquoi il ne la reconnaît pas alors que lors de la création > je n'ai pas eu d'erreur. > > Merci encore. > > Christophe > cDs > > > > "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de news: > C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... >> Bonjour, >> >> Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta >> démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) >> >> Exécute ce script sur ta base : >> >> CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) >> RETURNS VARCHAR(8000) >> AS >> BEGIN >> IF @NAME IS NULL >> RETURN NULL >> IF LEN(@NAME) = 1 >> RETURN UPPER(@NAME) >> RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + >> LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) >> END >> GO >> >> Il te suffit ensuite de lancer une requête du type : >> SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM >> TATABLE >> >> Pour la suite je te conseille d'attendre le retour de congés du >> développeur >> :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter les >> espaces et les tirets). >> Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement >> des >> requêtes. >> >> HTH >> >> >> "christophe cDs" a écrit : >> >>> Bonjour et merci de votre réponse, >>> >>> La base de donnée se trouve sur un serveur SQL2000 entreprise. >>> En ne prenant pas en considération les noms composé, mais juste le fait >>> de >>> mettre les premieres lettres en capital et le reste en petit, est ce que >>> cela pourrait faciliter la tache pour creer une requete ? >>> >>> A vrai dire je ne suis pas developpeur du tout mais manager du support >>> client, le developpeur est actuellement en vacances, c'est pourquoi >>> j'essai >>> de me debrouiller tant bien que mal a trouver une solution. >>> >>> Je pense que cela doit etre possible , j'ai effectuer des recherche sur >>> le >>> net, et trouver quelques approches mais rien de concluant >>> malheureusement. >>> >>> En tout cas merci encore de votre réponse. >>> >>> Christophe >>> >>> >>> >>> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le >>> message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >>> > Bonjour Christophe, >>> > >>> > SQL n'est pas le langage de prédilection pour manipuler des chaînes de >>> > caractères, un langage de programmation sera plus adapté. De plus, ce >>> > genre de traitement est à implémenter dans une couche métier, bien >>> > avant >>> > d'être au sein de SQL Server. Cela dit, je ne connais pas les >>> > contraintes >>> > donc je vais proposer d'autres idées : >>> > -il est aussi possible de définir ses propres types (UDT) développés >>> > en >>> > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server >>> > 2005 >>> > avec la SQLCLR. >>> > -si ce traitement doit être effectué une seule fois en mode batch, >>> > vous >>> > pouvez aussi regarder du coté des Procédures Stockées en code managé. >>> > >>> > J'espère avoir répondu à la question... >>> > >>> > -- >>> > Jean-Pierre Riehl >>> > http://blog.djeepy1.net >>> > http://www.bewise.fr >>> > >>> > >>> > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message >>> > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >>> >> Bonjour, >>> >> >>> >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" >>> >> d'une >>> >> table "models" pour que les entrées soit mise à jour de la façon >>> >> suivante >>> >> : >>> >> >>> >> 1 ère lettre en capitale (uppercase) et le reste en petit (lowercase) >>> >> . >>> >> (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: >>> >> marie cécile dodu qui doit devenir Marie Cécile Dodu) >>> >> >>> >> Merci de votre aide. >>> >> >>> >> Christophe >>> >> >>> > >>> >>> >>> > > |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
PS: Maintenant que le script a l'air opérationnel tel quel , y a t il une
possibilité de le modifier un peu pour qu'il prenne en considération les espace ou - pour les nom composé? Merci "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le message de news: esKPfeE0HHA.2484@TK2MSFTNGP06.phx.gbl... > Alors , je pense avoir trouvé la solution. > > J'ai récupéré une partie de la fonction et j'ai modifier un script que > j'avais trouver sur un site. > > Voila donc le script que j'ai fait, le résultat dans la table est correct. > Si vous pensez que cela n'est pas bon dites le moi, j'ai fait le test sur > un base de test ( par sécurité). > > UPDATE models SET prenom = (UPPER(SUBSTRING(prenom, 1, 1)) + > LOWER(SUBSTRING(prenom, 2, LEN(prenom) -1))) > Celui ci fonction pour une colonne spécifique mais cela ne me pose pas de > problème de le lancer deux fois en modifiant les champs. > > merci. > > > "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le > message de news: urx24RE0HHA.5644@TK2MSFTNGP05.phx.gbl... >> Bonjour et merci, >> >> Je viens de tester votre solution, lorsque exécute le script pour créer >> la fonction, cela passe sans problème, mais lorsque je passe le deuxième >> script en mettant le nom de ma table, j'ai une erreur qui me dit qu il ne >> reconnaît pas FN_FIRST_CAP comme étant une fonction. >> >> Server: Msg 195, Level 15, State 10, Line 1 >> 'FN_FIRST_CAP' is not a recognized function name. >> >> Une idée de pourquoi il ne la reconnaît pas alors que lors de la création >> je n'ai pas eu d'erreur. >> >> Merci encore. >> >> Christophe >> cDs >> >> >> >> "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de news: >> C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... >>> Bonjour, >>> >>> Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta >>> démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) >>> >>> Exécute ce script sur ta base : >>> >>> CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) >>> RETURNS VARCHAR(8000) >>> AS >>> BEGIN >>> IF @NAME IS NULL >>> RETURN NULL >>> IF LEN(@NAME) = 1 >>> RETURN UPPER(@NAME) >>> RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + >>> LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) >>> END >>> GO >>> >>> Il te suffit ensuite de lancer une requête du type : >>> SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM >>> TATABLE >>> >>> Pour la suite je te conseille d'attendre le retour de congés du >>> développeur >>> :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter les >>> espaces et les tirets). >>> Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement >>> des >>> requêtes. >>> >>> HTH >>> >>> >>> "christophe cDs" a écrit : >>> >>>> Bonjour et merci de votre réponse, >>>> >>>> La base de donnée se trouve sur un serveur SQL2000 entreprise. >>>> En ne prenant pas en considération les noms composé, mais juste le fait >>>> de >>>> mettre les premieres lettres en capital et le reste en petit, est ce >>>> que >>>> cela pourrait faciliter la tache pour creer une requete ? >>>> >>>> A vrai dire je ne suis pas developpeur du tout mais manager du support >>>> client, le developpeur est actuellement en vacances, c'est pourquoi >>>> j'essai >>>> de me debrouiller tant bien que mal a trouver une solution. >>>> >>>> Je pense que cela doit etre possible , j'ai effectuer des recherche sur >>>> le >>>> net, et trouver quelques approches mais rien de concluant >>>> malheureusement. >>>> >>>> En tout cas merci encore de votre réponse. >>>> >>>> Christophe >>>> >>>> >>>> >>>> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le >>>> message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >>>> > Bonjour Christophe, >>>> > >>>> > SQL n'est pas le langage de prédilection pour manipuler des chaînes >>>> > de >>>> > caractères, un langage de programmation sera plus adapté. De plus, ce >>>> > genre de traitement est à implémenter dans une couche métier, bien >>>> > avant >>>> > d'être au sein de SQL Server. Cela dit, je ne connais pas les >>>> > contraintes >>>> > donc je vais proposer d'autres idées : >>>> > -il est aussi possible de définir ses propres types (UDT) développés >>>> > en >>>> > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server >>>> > 2005 >>>> > avec la SQLCLR. >>>> > -si ce traitement doit être effectué une seule fois en mode batch, >>>> > vous >>>> > pouvez aussi regarder du coté des Procédures Stockées en code managé. >>>> > >>>> > J'espère avoir répondu à la question... >>>> > >>>> > -- >>>> > Jean-Pierre Riehl >>>> > http://blog.djeepy1.net >>>> > http://www.bewise.fr >>>> > >>>> > >>>> > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message >>>> > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >>>> >> Bonjour, >>>> >> >>>> >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" >>>> >> d'une >>>> >> table "models" pour que les entrées soit mise à jour de la façon >>>> >> suivante >>>> >> : >>>> >> >>>> >> 1 ère lettre en capitale (uppercase) et le reste en petit >>>> >> (lowercase) . >>>> >> (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: >>>> >> marie cécile dodu qui doit devenir Marie Cécile Dodu) >>>> >> >>>> >> Merci de votre aide. >>>> >> >>>> >> Christophe >>>> >> >>>> > >>>> >>>> >>>> >> >> > > |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
J'ai trouver une fonction qui fonctionne
http://vyaskn.tripod.com/code/propercase.txt Lorsque je lance la commande suivante ensuite: SELECT dbo.propercase(Nom) AS Nom, dbo.propercase(Prenom) AS Prenom FROM models J'ai bien les valeurs converties mais elles ne s'enregistrent pas dans la table. Il me montre seulement le resultat sans les sauvegarder. Merci. "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le message de news: ueKhHhE0HHA.3768@TK2MSFTNGP06.phx.gbl... > PS: Maintenant que le script a l'air opérationnel tel quel , y a t il une > possibilité de le modifier un peu pour qu'il prenne en considération les > espace ou - pour les nom composé? > > Merci > > > "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le > message de news: esKPfeE0HHA.2484@TK2MSFTNGP06.phx.gbl... >> Alors , je pense avoir trouvé la solution. >> >> J'ai récupéré une partie de la fonction et j'ai modifier un script que >> j'avais trouver sur un site. >> >> Voila donc le script que j'ai fait, le résultat dans la table est >> correct. >> Si vous pensez que cela n'est pas bon dites le moi, j'ai fait le test sur >> un base de test ( par sécurité). >> >> UPDATE models SET prenom = (UPPER(SUBSTRING(prenom, 1, 1)) + >> LOWER(SUBSTRING(prenom, 2, LEN(prenom) -1))) >> Celui ci fonction pour une colonne spécifique mais cela ne me pose pas de >> problème de le lancer deux fois en modifiant les champs. >> >> merci. >> >> >> "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le >> message de news: urx24RE0HHA.5644@TK2MSFTNGP05.phx.gbl... >>> Bonjour et merci, >>> >>> Je viens de tester votre solution, lorsque exécute le script pour créer >>> la fonction, cela passe sans problème, mais lorsque je passe le deuxième >>> script en mettant le nom de ma table, j'ai une erreur qui me dit qu il >>> ne reconnaît pas FN_FIRST_CAP comme étant une fonction. >>> >>> Server: Msg 195, Level 15, State 10, Line 1 >>> 'FN_FIRST_CAP' is not a recognized function name. >>> >>> Une idée de pourquoi il ne la reconnaît pas alors que lors de la >>> création je n'ai pas eu d'erreur. >>> >>> Merci encore. >>> >>> Christophe >>> cDs >>> >>> >>> >>> "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de news: >>> C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... >>>> Bonjour, >>>> >>>> Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta >>>> démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) >>>> >>>> Exécute ce script sur ta base : >>>> >>>> CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) >>>> RETURNS VARCHAR(8000) >>>> AS >>>> BEGIN >>>> IF @NAME IS NULL >>>> RETURN NULL >>>> IF LEN(@NAME) = 1 >>>> RETURN UPPER(@NAME) >>>> RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + >>>> LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) >>>> END >>>> GO >>>> >>>> Il te suffit ensuite de lancer une requête du type : >>>> SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM >>>> TATABLE >>>> >>>> Pour la suite je te conseille d'attendre le retour de congés du >>>> développeur >>>> :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter les >>>> espaces et les tirets). >>>> Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement >>>> des >>>> requêtes. >>>> >>>> HTH >>>> >>>> >>>> "christophe cDs" a écrit : >>>> >>>>> Bonjour et merci de votre réponse, >>>>> >>>>> La base de donnée se trouve sur un serveur SQL2000 entreprise. >>>>> En ne prenant pas en considération les noms composé, mais juste le >>>>> fait de >>>>> mettre les premieres lettres en capital et le reste en petit, est ce >>>>> que >>>>> cela pourrait faciliter la tache pour creer une requete ? >>>>> >>>>> A vrai dire je ne suis pas developpeur du tout mais manager du support >>>>> client, le developpeur est actuellement en vacances, c'est pourquoi >>>>> j'essai >>>>> de me debrouiller tant bien que mal a trouver une solution. >>>>> >>>>> Je pense que cela doit etre possible , j'ai effectuer des recherche >>>>> sur le >>>>> net, et trouver quelques approches mais rien de concluant >>>>> malheureusement. >>>>> >>>>> En tout cas merci encore de votre réponse. >>>>> >>>>> Christophe >>>>> >>>>> >>>>> >>>>> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le >>>>> message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >>>>> > Bonjour Christophe, >>>>> > >>>>> > SQL n'est pas le langage de prédilection pour manipuler des chaînes >>>>> > de >>>>> > caractères, un langage de programmation sera plus adapté. De plus, >>>>> > ce >>>>> > genre de traitement est à implémenter dans une couche métier, bien >>>>> > avant >>>>> > d'être au sein de SQL Server. Cela dit, je ne connais pas les >>>>> > contraintes >>>>> > donc je vais proposer d'autres idées : >>>>> > -il est aussi possible de définir ses propres types (UDT) >>>>> > développés en >>>>> > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server >>>>> > 2005 >>>>> > avec la SQLCLR. >>>>> > -si ce traitement doit être effectué une seule fois en mode batch, >>>>> > vous >>>>> > pouvez aussi regarder du coté des Procédures Stockées en code >>>>> > managé. >>>>> > >>>>> > J'espère avoir répondu à la question... >>>>> > >>>>> > -- >>>>> > Jean-Pierre Riehl >>>>> > http://blog.djeepy1.net >>>>> > http://www.bewise.fr >>>>> > >>>>> > >>>>> > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in >>>>> > message >>>>> > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >>>>> >> Bonjour, >>>>> >> >>>>> >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" >>>>> >> d'une >>>>> >> table "models" pour que les entrées soit mise à jour de la façon >>>>> >> suivante >>>>> >> : >>>>> >> >>>>> >> 1 ère lettre en capitale (uppercase) et le reste en petit >>>>> >> (lowercase) . >>>>> >> (en prenant en compte qu il peut y avoir des prenom/nom composé, >>>>> >> ex: >>>>> >> marie cécile dodu qui doit devenir Marie Cécile Dodu) >>>>> >> >>>>> >> Merci de votre aide. >>>>> >> >>>>> >> Christophe >>>>> >> >>>>> > >>>>> >>>>> >>>>> >>> >>> >> >> > > |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Essaie avec
UPDATE models SET Nom = dbo.propercase(Nom), Prenom = dbo.propercase(Prenom) -- Jean-Pierre Riehl http://blog.djeepy1.net http://www.bewise.fr "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message news:%23HjLtDF0HHA.1188@TK2MSFTNGP04.phx.gbl... > J'ai trouver une fonction qui fonctionne > http://vyaskn.tripod.com/code/propercase.txt > Lorsque je lance la commande suivante ensuite: SELECT dbo.propercase(Nom) > AS Nom, dbo.propercase(Prenom) AS Prenom FROM models > J'ai bien les valeurs converties mais elles ne s'enregistrent pas dans la > table. Il me montre seulement le resultat sans les sauvegarder. > > Merci. > > "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le > message de news: ueKhHhE0HHA.3768@TK2MSFTNGP06.phx.gbl... >> PS: Maintenant que le script a l'air opérationnel tel quel , y a t il une >> possibilité de le modifier un peu pour qu'il prenne en considération les >> espace ou - pour les nom composé? >> >> Merci >> >> >> "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le >> message de news: esKPfeE0HHA.2484@TK2MSFTNGP06.phx.gbl... >>> Alors , je pense avoir trouvé la solution. >>> >>> J'ai récupéré une partie de la fonction et j'ai modifier un script que >>> j'avais trouver sur un site. >>> >>> Voila donc le script que j'ai fait, le résultat dans la table est >>> correct. >>> Si vous pensez que cela n'est pas bon dites le moi, j'ai fait le test >>> sur un base de test ( par sécurité). >>> >>> UPDATE models SET prenom = (UPPER(SUBSTRING(prenom, 1, 1)) + >>> LOWER(SUBSTRING(prenom, 2, LEN(prenom) -1))) >>> Celui ci fonction pour une colonne spécifique mais cela ne me pose pas >>> de problème de le lancer deux fois en modifiant les champs. >>> >>> merci. >>> >>> >>> "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le >>> message de news: urx24RE0HHA.5644@TK2MSFTNGP05.phx.gbl... >>>> Bonjour et merci, >>>> >>>> Je viens de tester votre solution, lorsque exécute le script pour créer >>>> la fonction, cela passe sans problème, mais lorsque je passe le >>>> deuxième script en mettant le nom de ma table, j'ai une erreur qui me >>>> dit qu il ne reconnaît pas FN_FIRST_CAP comme étant une fonction. >>>> >>>> Server: Msg 195, Level 15, State 10, Line 1 >>>> 'FN_FIRST_CAP' is not a recognized function name. >>>> >>>> Une idée de pourquoi il ne la reconnaît pas alors que lors de la >>>> création je n'ai pas eu d'erreur. >>>> >>>> Merci encore. >>>> >>>> Christophe >>>> cDs >>>> >>>> >>>> >>>> "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de >>>> news: C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... >>>>> Bonjour, >>>>> >>>>> Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta >>>>> démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) >>>>> >>>>> Exécute ce script sur ta base : >>>>> >>>>> CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) >>>>> RETURNS VARCHAR(8000) >>>>> AS >>>>> BEGIN >>>>> IF @NAME IS NULL >>>>> RETURN NULL >>>>> IF LEN(@NAME) = 1 >>>>> RETURN UPPER(@NAME) >>>>> RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + >>>>> LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) >>>>> END >>>>> GO >>>>> >>>>> Il te suffit ensuite de lancer une requête du type : >>>>> SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM >>>>> TATABLE >>>>> >>>>> Pour la suite je te conseille d'attendre le retour de congés du >>>>> développeur >>>>> :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter >>>>> les >>>>> espaces et les tirets). >>>>> Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement >>>>> des >>>>> requêtes. >>>>> >>>>> HTH >>>>> >>>>> >>>>> "christophe cDs" a écrit : >>>>> >>>>>> Bonjour et merci de votre réponse, >>>>>> >>>>>> La base de donnée se trouve sur un serveur SQL2000 entreprise. >>>>>> En ne prenant pas en considération les noms composé, mais juste le >>>>>> fait de >>>>>> mettre les premieres lettres en capital et le reste en petit, est ce >>>>>> que >>>>>> cela pourrait faciliter la tache pour creer une requete ? >>>>>> >>>>>> A vrai dire je ne suis pas developpeur du tout mais manager du >>>>>> support >>>>>> client, le developpeur est actuellement en vacances, c'est pourquoi >>>>>> j'essai >>>>>> de me debrouiller tant bien que mal a trouver une solution. >>>>>> >>>>>> Je pense que cela doit etre possible , j'ai effectuer des recherche >>>>>> sur le >>>>>> net, et trouver quelques approches mais rien de concluant >>>>>> malheureusement. >>>>>> >>>>>> En tout cas merci encore de votre réponse. >>>>>> >>>>>> Christophe >>>>>> >>>>>> >>>>>> >>>>>> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans >>>>>> le >>>>>> message de news: >>>>>> 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >>>>>> > Bonjour Christophe, >>>>>> > >>>>>> > SQL n'est pas le langage de prédilection pour manipuler des chaînes >>>>>> > de >>>>>> > caractères, un langage de programmation sera plus adapté. De plus, >>>>>> > ce >>>>>> > genre de traitement est à implémenter dans une couche métier, bien >>>>>> > avant >>>>>> > d'être au sein de SQL Server. Cela dit, je ne connais pas les >>>>>> > contraintes >>>>>> > donc je vais proposer d'autres idées : >>>>>> > -il est aussi possible de définir ses propres types (UDT) >>>>>> > développés en >>>>>> > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server >>>>>> > 2005 >>>>>> > avec la SQLCLR. >>>>>> > -si ce traitement doit être effectué une seule fois en mode batch, >>>>>> > vous >>>>>> > pouvez aussi regarder du coté des Procédures Stockées en code >>>>>> > managé. >>>>>> > >>>>>> > J'espère avoir répondu à la question... >>>>>> > >>>>>> > -- >>>>>> > Jean-Pierre Riehl >>>>>> > http://blog.djeepy1.net >>>>>> > http://www.bewise.fr >>>>>> > >>>>>> > >>>>>> > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in >>>>>> > message >>>>>> > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >>>>>> >> Bonjour, >>>>>> >> >>>>>> >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et >>>>>> >> "nom" d'une >>>>>> >> table "models" pour que les entrées soit mise à jour de la façon >>>>>> >> suivante >>>>>> >> : >>>>>> >> >>>>>> >> 1 ère lettre en capitale (uppercase) et le reste en petit >>>>>> >> (lowercase) . >>>>>> >> (en prenant en compte qu il peut y avoir des prenom/nom composé, >>>>>> >> ex: >>>>>> >> marie cécile dodu qui doit devenir Marie Cécile Dodu) >>>>>> >> >>>>>> >> Merci de votre aide. >>>>>> >> >>>>>> >> Christophe >>>>>> >> >>>>>> > >>>>>> >>>>>> >>>>>> >>>> >>>> >>> >>> >> >> > > |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
MERCIIIIIIIIIIIIII
Enfin ca marche je vais pouvoir mettre a jour cette table. Merci Beaucoup de votre aide. "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le message de news: 1D946290-9EB7-4F34-A862-C2DEB2C1633B@microsoft.com... > Essaie avec > > UPDATE models > SET Nom = dbo.propercase(Nom), > Prenom = dbo.propercase(Prenom) > > > -- > Jean-Pierre Riehl > http://blog.djeepy1.net > http://www.bewise.fr > > > > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message > news:%23HjLtDF0HHA.1188@TK2MSFTNGP04.phx.gbl... >> J'ai trouver une fonction qui fonctionne >> http://vyaskn.tripod.com/code/propercase.txt >> Lorsque je lance la commande suivante ensuite: SELECT dbo.propercase(Nom) >> AS Nom, dbo.propercase(Prenom) AS Prenom FROM models >> J'ai bien les valeurs converties mais elles ne s'enregistrent pas dans la >> table. Il me montre seulement le resultat sans les sauvegarder. >> >> Merci. >> >> "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le >> message de news: ueKhHhE0HHA.3768@TK2MSFTNGP06.phx.gbl... >>> PS: Maintenant que le script a l'air opérationnel tel quel , y a t il >>> une possibilité de le modifier un peu pour qu'il prenne en considération >>> les espace ou - pour les nom composé? >>> >>> Merci >>> >>> >>> "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le >>> message de news: esKPfeE0HHA.2484@TK2MSFTNGP06.phx.gbl... >>>> Alors , je pense avoir trouvé la solution. >>>> >>>> J'ai récupéré une partie de la fonction et j'ai modifier un script que >>>> j'avais trouver sur un site. >>>> >>>> Voila donc le script que j'ai fait, le résultat dans la table est >>>> correct. >>>> Si vous pensez que cela n'est pas bon dites le moi, j'ai fait le test >>>> sur un base de test ( par sécurité). >>>> >>>> UPDATE models SET prenom = (UPPER(SUBSTRING(prenom, 1, 1)) + >>>> LOWER(SUBSTRING(prenom, 2, LEN(prenom) -1))) >>>> Celui ci fonction pour une colonne spécifique mais cela ne me pose pas >>>> de problème de le lancer deux fois en modifiant les champs. >>>> >>>> merci. >>>> >>>> >>>> "christophe cDs" <christophe@(no-spam)cds-paris.com> a écrit dans le >>>> message de news: urx24RE0HHA.5644@TK2MSFTNGP05.phx.gbl... >>>>> Bonjour et merci, >>>>> >>>>> Je viens de tester votre solution, lorsque exécute le script pour >>>>> créer la fonction, cela passe sans problème, mais lorsque je passe le >>>>> deuxième script en mettant le nom de ma table, j'ai une erreur qui me >>>>> dit qu il ne reconnaît pas FN_FIRST_CAP comme étant une fonction. >>>>> >>>>> Server: Msg 195, Level 15, State 10, Line 1 >>>>> 'FN_FIRST_CAP' is not a recognized function name. >>>>> >>>>> Une idée de pourquoi il ne la reconnaît pas alors que lors de la >>>>> création je n'ai pas eu d'erreur. >>>>> >>>>> Merci encore. >>>>> >>>>> Christophe >>>>> cDs >>>>> >>>>> >>>>> >>>>> "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de >>>>> news: C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... >>>>>> Bonjour, >>>>>> >>>>>> Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta >>>>>> démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) >>>>>> >>>>>> Exécute ce script sur ta base : >>>>>> >>>>>> CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) >>>>>> RETURNS VARCHAR(8000) >>>>>> AS >>>>>> BEGIN >>>>>> IF @NAME IS NULL >>>>>> RETURN NULL >>>>>> IF LEN(@NAME) = 1 >>>>>> RETURN UPPER(@NAME) >>>>>> RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + >>>>>> LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) >>>>>> END >>>>>> GO >>>>>> >>>>>> Il te suffit ensuite de lancer une requête du type : >>>>>> SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM >>>>>> TATABLE >>>>>> >>>>>> Pour la suite je te conseille d'attendre le retour de congés du >>>>>> développeur >>>>>> :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter >>>>>> les >>>>>> espaces et les tirets). >>>>>> Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec >>>>>> uniquement des >>>>>> requêtes. >>>>>> >>>>>> HTH >>>>>> >>>>>> >>>>>> "christophe cDs" a écrit : >>>>>> >>>>>>> Bonjour et merci de votre réponse, >>>>>>> >>>>>>> La base de donnée se trouve sur un serveur SQL2000 entreprise. >>>>>>> En ne prenant pas en considération les noms composé, mais juste le >>>>>>> fait de >>>>>>> mettre les premieres lettres en capital et le reste en petit, est ce >>>>>>> que >>>>>>> cela pourrait faciliter la tache pour creer une requete ? >>>>>>> >>>>>>> A vrai dire je ne suis pas developpeur du tout mais manager du >>>>>>> support >>>>>>> client, le developpeur est actuellement en vacances, c'est pourquoi >>>>>>> j'essai >>>>>>> de me debrouiller tant bien que mal a trouver une solution. >>>>>>> >>>>>>> Je pense que cela doit etre possible , j'ai effectuer des recherche >>>>>>> sur le >>>>>>> net, et trouver quelques approches mais rien de concluant >>>>>>> malheureusement. >>>>>>> >>>>>>> En tout cas merci encore de votre réponse. >>>>>>> >>>>>>> Christophe >>>>>>> >>>>>>> >>>>>>> >>>>>>> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans >>>>>>> le >>>>>>> message de news: >>>>>>> 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >>>>>>> > Bonjour Christophe, >>>>>>> > >>>>>>> > SQL n'est pas le langage de prédilection pour manipuler des >>>>>>> > chaînes de >>>>>>> > caractères, un langage de programmation sera plus adapté. De plus, >>>>>>> > ce >>>>>>> > genre de traitement est à implémenter dans une couche métier, bien >>>>>>> > avant >>>>>>> > d'être au sein de SQL Server. Cela dit, je ne connais pas les >>>>>>> > contraintes >>>>>>> > donc je vais proposer d'autres idées : >>>>>>> > -il est aussi possible de définir ses propres types (UDT) >>>>>>> > développés en >>>>>>> > .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL >>>>>>> > Server 2005 >>>>>>> > avec la SQLCLR. >>>>>>> > -si ce traitement doit être effectué une seule fois en mode >>>>>>> > batch, vous >>>>>>> > pouvez aussi regarder du coté des Procédures Stockées en code >>>>>>> > managé. >>>>>>> > >>>>>>> > J'espère avoir répondu à la question... >>>>>>> > >>>>>>> > -- >>>>>>> > Jean-Pierre Riehl >>>>>>> > http://blog.djeepy1.net >>>>>>> > http://www.bewise.fr >>>>>>> > >>>>>>> > >>>>>>> > "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in >>>>>>> > message >>>>>>> > news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >>>>>>> >> Bonjour, >>>>>>> >> >>>>>>> >> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et >>>>>>> >> "nom" d'une >>>>>>> >> table "models" pour que les entrées soit mise à jour de la façon >>>>>>> >> suivante >>>>>>> >> : >>>>>>> >> >>>>>>> >> 1 ère lettre en capitale (uppercase) et le reste en petit >>>>>>> >> (lowercase) . >>>>>>> >> (en prenant en compte qu il peut y avoir des prenom/nom composé, >>>>>>> >> ex: >>>>>>> >> marie cécile dodu qui doit devenir Marie Cécile Dodu) >>>>>>> >> >>>>>>> >> Merci de votre aide. >>>>>>> >> >>>>>>> >> Christophe >>>>>>> >> >>>>>>> > >>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>>> >>>> >>> >>> >> >> > |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
christophe cDs a écrit : > Bonjour et merci, > > Je viens de tester votre solution, lorsque exécute le script pour créer la > fonction, cela passe sans problème, mais lorsque je passe le deuxième script > en mettant le nom de ma table, j'ai une erreur qui me dit qu il ne reconnaît > pas FN_FIRST_CAP comme étant une fonction. Une fonction doit TOUJOURS être appelée avec son nom + SON SCHEMA. Donc dbo.FN_FIRST_CAP A + > > Server: Msg 195, Level 15, State 10, Line 1 > 'FN_FIRST_CAP' is not a recognized function name. > > Une idée de pourquoi il ne la reconnaît pas alors que lors de la création je > n'ai pas eu d'erreur. > > Merci encore. > > Christophe > cDs > > > > "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de news: > C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... >> Bonjour, >> >> Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta >> démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) >> >> Exécute ce script sur ta base : >> >> CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) >> RETURNS VARCHAR(8000) >> AS >> BEGIN >> IF @NAME IS NULL >> RETURN NULL >> IF LEN(@NAME) = 1 >> RETURN UPPER(@NAME) >> RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + >> LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) >> END >> GO >> >> Il te suffit ensuite de lancer une requête du type : >> SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM >> TATABLE >> >> Pour la suite je te conseille d'attendre le retour de congés du >> développeur >> :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter les >> espaces et les tirets). >> Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement des >> requêtes. >> >> HTH >> >> >> "christophe cDs" a écrit : >> >>> Bonjour et merci de votre réponse, >>> >>> La base de donnée se trouve sur un serveur SQL2000 entreprise. >>> En ne prenant pas en considération les noms composé, mais juste le fait >>> de >>> mettre les premieres lettres en capital et le reste en petit, est ce que >>> cela pourrait faciliter la tache pour creer une requete ? >>> >>> A vrai dire je ne suis pas developpeur du tout mais manager du support >>> client, le developpeur est actuellement en vacances, c'est pourquoi >>> j'essai >>> de me debrouiller tant bien que mal a trouver une solution. >>> >>> Je pense que cela doit etre possible , j'ai effectuer des recherche sur >>> le >>> net, et trouver quelques approches mais rien de concluant >>> malheureusement. >>> >>> En tout cas merci encore de votre réponse. >>> >>> Christophe >>> >>> >>> >>> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le >>> message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >>>> Bonjour Christophe, >>>> >>>> SQL n'est pas le langage de prédilection pour manipuler des chaînes de >>>> caractères, un langage de programmation sera plus adapté. De plus, ce >>>> genre de traitement est à implémenter dans une couche métier, bien >>>> avant >>>> d'être au sein de SQL Server. Cela dit, je ne connais pas les >>>> contraintes >>>> donc je vais proposer d'autres idées : >>>> -il est aussi possible de définir ses propres types (UDT) développés >>>> en >>>> .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server >>>> 2005 >>>> avec la SQLCLR. >>>> -si ce traitement doit être effectué une seule fois en mode batch, >>>> vous >>>> pouvez aussi regarder du coté des Procédures Stockées en code managé. >>>> >>>> J'espère avoir répondu à la question... >>>> >>>> -- >>>> Jean-Pierre Riehl >>>> http://blog.djeepy1.net >>>> http://www.bewise.fr >>>> >>>> >>>> "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message >>>> news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >>>>> Bonjour, >>>>> >>>>> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" >>>>> d'une >>>>> table "models" pour que les entrées soit mise à jour de la façon >>>>> suivante >>>>> : >>>>> >>>>> 1 ère lettre en capitale (uppercase) et le reste en petit (lowercase) >>>>> . >>>>> (en prenant en compte qu il peut y avoir des prenom/nom composé, ex: >>>>> marie cécile dodu qui doit devenir Marie Cécile Dodu) >>>>> >>>>> Merci de votre aide. >>>>> >>>>> Christophe >>>>> >>> >>> > > -- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com *********************** |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
Oui j'ai vu ça que cela fonctionnait après plusieurs test. Encore merci de votre aide a tous. Chris. "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news: OyWR63n0HHA.5980@TK2MSFTNGP04.phx.gbl... > > > christophe cDs a écrit : >> Bonjour et merci, >> >> Je viens de tester votre solution, lorsque exécute le script pour créer >> la fonction, cela passe sans problème, mais lorsque je passe le deuxième >> script en mettant le nom de ma table, j'ai une erreur qui me dit qu il ne >> reconnaît pas FN_FIRST_CAP comme étant une fonction. > > Une fonction doit TOUJOURS être appelée avec son nom + SON SCHEMA. > > Donc dbo.FN_FIRST_CAP > > A + > > > >> >> Server: Msg 195, Level 15, State 10, Line 1 >> 'FN_FIRST_CAP' is not a recognized function name. >> >> Une idée de pourquoi il ne la reconnaît pas alors que lors de la création >> je n'ai pas eu d'erreur. >> >> Merci encore. >> >> Christophe >> cDs >> >> >> >> "OokieDookie" <sorrynospam@nowhere.com> a écrit dans le message de news: >> C2BBAC5A-87A1-485B-8020-B94CF5770E98@microsoft.com... >>> Bonjour, >>> >>> Fred BOUARD a créé une fonction utilisateur qui peut t'aider dans ta >>> démarche (http://sqlpro.developpez.com/cours/sqlserver/udf/) >>> >>> Exécute ce script sur ta base : >>> >>> CREATE FUNCTION FN_FIRST_CAP (@NAME VARCHAR(8000)) >>> RETURNS VARCHAR(8000) >>> AS >>> BEGIN >>> IF @NAME IS NULL >>> RETURN NULL >>> IF LEN(@NAME) = 1 >>> RETURN UPPER(@NAME) >>> RETURN UPPER(SUBSTRING(@NAME, 1, 1)) + >>> LOWER(SUBSTRING(@NAME, 2, LEN(@NAME) -1)) >>> END >>> GO >>> >>> Il te suffit ensuite de lancer une requête du type : >>> SELECT FN_FIRST_CAP(Nom) AS Nom, FN_FIRST_CAP(Prenom) AS Prenom FROM >>> TATABLE >>> >>> Pour la suite je te conseille d'attendre le retour de congés du >>> développeur >>> :/, mais la fonction PATINDEX peut t'aider (notamment pour détecter les >>> espaces et les tirets). >>> Mais comme l'a dit Jean-Pierre, ça risque d'être sport avec uniquement >>> des >>> requêtes. >>> >>> HTH >>> >>> >>> "christophe cDs" a écrit : >>> >>>> Bonjour et merci de votre réponse, >>>> >>>> La base de donnée se trouve sur un serveur SQL2000 entreprise. >>>> En ne prenant pas en considération les noms composé, mais juste le fait >>>> de >>>> mettre les premieres lettres en capital et le reste en petit, est ce >>>> que >>>> cela pourrait faciliter la tache pour creer une requete ? >>>> >>>> A vrai dire je ne suis pas developpeur du tout mais manager du support >>>> client, le developpeur est actuellement en vacances, c'est pourquoi >>>> j'essai >>>> de me debrouiller tant bien que mal a trouver une solution. >>>> >>>> Je pense que cela doit etre possible , j'ai effectuer des recherche sur >>>> le >>>> net, et trouver quelques approches mais rien de concluant >>>> malheureusement. >>>> >>>> En tout cas merci encore de votre réponse. >>>> >>>> Christophe >>>> >>>> >>>> >>>> "Jean-Pierre Riehl" <jean-pierre.riehl@b-e-w-i-s-e.fr> a écrit dans le >>>> message de news: 18B171E2-6A65-42E0-A408-37F900636BD6@microsoft.com... >>>>> Bonjour Christophe, >>>>> >>>>> SQL n'est pas le langage de prédilection pour manipuler des chaînes de >>>>> caractères, un langage de programmation sera plus adapté. De plus, ce >>>>> genre de traitement est à implémenter dans une couche métier, bien >>>>> avant >>>>> d'être au sein de SQL Server. Cela dit, je ne connais pas les >>>>> contraintes >>>>> donc je vais proposer d'autres idées : >>>>> -il est aussi possible de définir ses propres types (UDT) développés >>>>> en >>>>> .NET (C#, VB.NET, etc.) et de les faire fonctionner dans SQL Server >>>>> 2005 >>>>> avec la SQLCLR. >>>>> -si ce traitement doit être effectué une seule fois en mode batch, >>>>> vous >>>>> pouvez aussi regarder du coté des Procédures Stockées en code managé. >>>>> >>>>> J'espère avoir répondu à la question... >>>>> >>>>> -- >>>>> Jean-Pierre Riehl >>>>> http://blog.djeepy1.net >>>>> http://www.bewise.fr >>>>> >>>>> >>>>> "christophe cDs" <christophe@(no-spam)cds-paris.com> wrote in message >>>>> news:e0a2cgszHHA.4916@TK2MSFTNGP03.phx.gbl... >>>>>> Bonjour, >>>>>> >>>>>> J'aimerais mettre à jour le contenu de 2 colonnes "prenom" et "nom" >>>>>> d'une >>>>>> table "models" pour que les entrées soit mise à jour de la façon >>>>>> suivante >>>>>> : >& |