IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Limite d'une ligne


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Par défaut Limite d'une ligne
    salut tout le monde,

    J'ai deux problemes en fait.....

    Le premier : je voudrais savoir comment on fait pour connaitre la taille d'une ligne car je veux savoir si mes lignes sont bien inferieures a 8Ko pour eviter tout malfonctionnement


    Le deuxieme :

    Un champ a ete rempli par ce texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Test N° 6191<BR>Essai : 77 : Ceci est un test.<BR>Test :  <B>6191<B> : New Test<BR>Entreprise :  MonEntreprise<BR>Adresse : Paris
    Moi je voudrais separer tout ca dans plusieurs champs :

    1er champ: Test N° 6191
    2eme champ : Essai : 77 : Ceci est un test.
    3eme champ : Test : <B>6191<B> : New Test
    etc.....

    Comment faire pour separer tout ce texte automatiquement pour toutes mes lignes sans avoir a tout retaper???



    Merci pour votre aide!!

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    1) pour la taille d'une ligne, ce n'est pas aisé. En mode pessimiste, faites en sorte que la somme des octets d'un enregistrement ne dépasse pas 8000. En mode optimiste, laissez faire (ce qui vous permettra de gérer des champs plus longs) et trappez l'erreur 8618 (sauf erreur) lors des inserts/updates.
    2) traitement de chaîne à l'aide des fonctions datalength, patindex, left, right... c'est pas trop dur, car vous avez des délimiteurs clairs.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Par défaut
    Merci mais j'aimerais bien savoir comment on peut connaitre la taille d'une ligne...?? quelle commande SQL???

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    Citation Envoyé par Etienne1
    Merci mais j'aimerais bien savoir comment on peut connaitre la taille d'une ligne...?? quelle commande SQL???
    pas de commande sql.

    par contre, tu peux "compter" les bytes (octets) suivants un règle assez simple :

    tu fais la somme des octets de ta ligne.

    Si ta ligne correspond à une somme de varchar(n) alors tu comptes les n.

    Par exemple
    declare @toto varchr(10)
    declare @tata varchar(2)

    select @toto + @toto "donne" varchar(12) donc 12 bytes...

    Ensuite regarde l'aide SQL pour les autres types de donnée:

    Int dans 8 bytes
    real(n) donne soit 4 soit 8 bytes
    datetime 8 bytes, smalldatatime 4 bytes, etc, etc...

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Par défaut
    ok merci bcp 8)

  6. #6
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Citation Envoyé par ZERS
    pas de commande sql.
    mais si, mais si...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select object_name(id), sum(length) 
    from syscolumns group by id
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    Citation Envoyé par fadace
    Citation Envoyé par ZERS
    pas de commande sql.
    mais si, mais si...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select object_name(id), sum(length) 
    from syscolumns group by id

    Ca donne la taille de la table, sp, etc, etc, mais pas la taille de la valeur contenue dans une ligne d'une table (ou la taille d'une variable) ???

  8. #8
    Invité de passage
    Inscrit en
    Septembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1
    Par défaut -
    Bonjour,
    j'arrive un peu tard dans cette discussion , mais j'ai eu besoin de connaitre le poids en octets de la ligne la plus "lourde" d'une table et voici la procédure que nous avons écrite (à compiler sur la bdd cible) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[LIGNE_TAILLE_MAX] (@NomSchema VARCHAR(10), @NomTable VARCHAR(50))
    AS
    BEGIN
     
    	DECLARE @NomColonne VARCHAR(100)
    	DECLARE @SQL VARCHAR(8000)
     
    	SET @SQL = 'SELECT TOP 1 '
     
    	DECLARE Colonne CURSOR FOR
    		SELECT syscolumns.name
    		FROM syscolumns 
    		INNER JOIN sysobjects ON sysobjects.id = syscolumns.id
    		WHERE sysobjects.xtype = 'U'
    		AND sysobjects.name = @NomTable
     
    	OPEN Colonne
     
    	FETCH NEXT FROM Colonne INTO @NomColonne
    		WHILE @@FETCH_STATUS = 0
    		 BEGIN
    			SET @SQL = @SQL + 'ISNULL(DATALENGTH(' + @NomColonne + '),0) + '
     
    			FETCH NEXT FROM Colonne INTO @NomColonne
    		END
     
    	CLOSE Colonne
    	DEALLOCATE Colonne
     
    	SET @SQL = LEFT(@SQL, (LEN(@SQL) - 2)) + ' AS Somme ,* FROM ' + @NomSchema + '.' + @NomTable + ' ORDER BY Somme DESC'
    	EXECUTE (@SQL)
     
    END
    Il suffit de lui passer en paramètre 1/ le nom du schéma (ou propriétaire si version SQL 2000) 2/ le nom de la table

    Si ça peut servir à quelqu'un, tant mieux...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saisie textbox limitée sur une ligne ?
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/10/2010, 12h05
  2. Limite max de ligne dans une table Access
    Par roidurif dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/05/2009, 16h16
  3. créer une nouvelle feuille si limite des 65536 lignes atteinte
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/09/2008, 15h48
  4. LIMIT partant d'une ligne précise (pas offset)
    Par manthoR dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2007, 16h49
  5. [FLASH 8] Longueur d'une ligne -> bug et limitation
    Par Lorenzo77 dans le forum Flash
    Réponses: 3
    Dernier message: 08/01/2007, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo