none
Première lettre en majuscule RRS feed

  • Question

  • Bonjour,

    je veux une méthode ou quelque chose qui permet de mettre la première lettre en majuscule à tous les champs de tous les tables que j'ai dans ma base de données.

    Bon j'utilise visual basic 2008 et sql server 2005.

    est ce qu'il aura une solution qui sert à faire ça?si Oui merci de me donner une.

     

    dimanche 11 décembre 2011 20:18

Réponses

  • Le script suivant modifie les données de toutes les colonnes de type caractère dans toutes les tables de la base de données.

     

    DECLARE @NOM_TABL  AS NVARCHAR(392)
    DECLARE @NOM_COL AS NVARCHAR(128)
    DECLARE @CMD AS NVARCHAR(1000)
    DECLARE C CURSOR STATIC FOR
        SELECT  QUOTENAME(S.[name]) + N'.' + QUOTENAME(T.[name]) AS NOM_TABL,
                QUOTENAME(C.[name]) AS NOM_COL
        FROM    sys.schemas AS S
        INNER JOIN  sys.tables AS T ON S.[schema_id] = T.[schema_id]
        INNER JOIN  sys.columns AS C ON T.[object_id] = C.[object_id]
        WHERE C.user_type_id IN (35, 99, 167, 175, 231, 239)
     
    OPEN C
    FETCH NEXT FROM C
    INTO @NOM_TABL, @NOM_COL
    WHILE @@FETCH_STATUS = 0
        BEGIN
            SET @CMD = N'UPDATE ' + @NOM_TABL 
                    + N' SET ' + @NOM_COL + N' = UPPER(LEFT(' 
                    + @NOM_COL + N', 1)) + CASE WHEN LEN('
                    + @NOM_COL + N') > 1 THEN RIGHT(' 
                    + @NOM_COL + N', LEN('
                    + @NOM_COL + N') - 1) ELSE N'''' END'
            EXEC sp_executeSql @CMD
            PRINT @CMD
            FETCH NEXT FROM C
            INTO @NOM_TABL, @NOM_COL
        END
    CLOSE C
    DEALLOCATE C
    
    


    Fred
    mardi 13 décembre 2011 05:38

Toutes les réponses

  • S'il s'agit bien de renommer les colonnes de chaque table de la base, le
    script suivant devrait faire l'affaire :
     
    DECLARE @NOM_OBJ  AS NVARCHAR(392)
    DECLARE @NOM_COL AS NVARCHAR(128)
    DECLARE C CURSOR STATIC FOR
        SELECT  QUOTENAME(S.[name]) + N'.' + QUOTENAME(T.[name]) + N'.' +
    QUOTENAME(C.[name]) AS NOM_OBJ,
                UPPER(LEFT(C.[name], 1)) + LOWER(RIGHT(C.[name],
    LEN(C.[name]) - 1)) AS NOM_COL
        FROM    sys.schemas AS S
        INNER JOIN  sys.tables AS T ON S.[schema_id] = T.[schema_id]
        INNER JOIN  sys.columns AS C ON T.[object_id] = C.[object_id]
     
    OPEN C
    FETCH NEXT FROM C
    INTO @NOM_OBJ, @NOM_COL
    WHILE @@FETCH_STATUS = 0
        BEGIN
            EXECUTE sp_rename @NOM_OBJ, @NOM_COL, 'COLUMN'
            FETCH NEXT FROM C
            INTO @NOM_OBJ, @NOM_COL
        END
    CLOSE C
    DEALLOCATE C
     
     

    Fred
    lundi 12 décembre 2011 06:20
  • Bonjour Foleide,

    Merci de tout votre attention,

    Est ce que ce cursor est utile seulement pour une table ou dans tous les tables de ma BD?

     

    lundi 12 décembre 2011 09:21
  • Bonjour,

    Je me permet de donner du code Vb, vu que je connais pas trop les DB je donne le code comme ça :

     

            Dim t() As String = {"titi""toto""tyty""tata"}
            For Each Val As String In t
                If Char.IsLower(Val.First) = True Then
                    MsgBox(Char.ToUpper(Val.First) & Mid(Val, 2))
                End If
            Next

    Si cela concerne que des requêtes SQL je pense que le bon forum est  http://social.msdn.microsoft.com/Forums/fr-FR/category/serveurfr ?

     


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    lundi 12 décembre 2011 10:00
    Auteur de réponse
  • Le script modifie toutes les colonnes de toutes les tables de la base de données.

    Il suffit de l'exécuter une fois à partir de Sql Server Management Studio (par exemple) dans la base concernée.

    Pour voir les changements qui seront effectués remplacez :

    EXECUTE sp_rename @NOM_OBJ, @NOM_COL, 'COLUMN'

    par

    PRINT @NOM_OBJ + N' : ' + @NOM_COL


    Fred
    lundi 12 décembre 2011 13:00
  • Bonjour,

    J'ai essayer la solution proposé par Fred et ça marche bien de ce qui concerne les noms des colonnes.Alors que moi je veux que ce Cursor sera exécuter sur les données que j'ai remplis dans les tables de ma BD.

    Merci .

    lundi 12 décembre 2011 13:38
  • Le script suivant modifie les données de toutes les colonnes de type caractère dans toutes les tables de la base de données.

     

    DECLARE @NOM_TABL  AS NVARCHAR(392)
    DECLARE @NOM_COL AS NVARCHAR(128)
    DECLARE @CMD AS NVARCHAR(1000)
    DECLARE C CURSOR STATIC FOR
        SELECT  QUOTENAME(S.[name]) + N'.' + QUOTENAME(T.[name]) AS NOM_TABL,
                QUOTENAME(C.[name]) AS NOM_COL
        FROM    sys.schemas AS S
        INNER JOIN  sys.tables AS T ON S.[schema_id] = T.[schema_id]
        INNER JOIN  sys.columns AS C ON T.[object_id] = C.[object_id]
        WHERE C.user_type_id IN (35, 99, 167, 175, 231, 239)
     
    OPEN C
    FETCH NEXT FROM C
    INTO @NOM_TABL, @NOM_COL
    WHILE @@FETCH_STATUS = 0
        BEGIN
            SET @CMD = N'UPDATE ' + @NOM_TABL 
                    + N' SET ' + @NOM_COL + N' = UPPER(LEFT(' 
                    + @NOM_COL + N', 1)) + CASE WHEN LEN('
                    + @NOM_COL + N') > 1 THEN RIGHT(' 
                    + @NOM_COL + N', LEN('
                    + @NOM_COL + N') - 1) ELSE N'''' END'
            EXEC sp_executeSql @CMD
            PRINT @CMD
            FETCH NEXT FROM C
            INTO @NOM_TABL, @NOM_COL
        END
    CLOSE C
    DEALLOCATE C
    
    


    Fred
    mardi 13 décembre 2011 05:38
  • Bonjour, Ahbariamina,

     

    Est-ce que vous avez testé la solution proposée par Fred ? Merci de tenir la communauté informée sur la suite de vos démarches.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mercredi 14 décembre 2011 09:54
  • Bonjour,

    le cursor de Fred me permet seulement de changer la première lettre de chaque enregistrement de chaque table et de supprimer les autres lettres qui suivent la première lettre alors il m'affiche seulement la première lettre en majuscule dans chaque enregistrement,je pense que vous compris ce que je veux dire.

    Merci

    lundi 19 décembre 2011 14:07