0
votes

Je veux trouver le plus long varchar dans une colonne spécifique d'une table SQL Server

Voici un exemple:

aaa 3


0 commentaires

4 Réponses :


3
votes

Vous pouvez utiliser commander par et limiter les résultats à une ligne: xxx

ou utiliser: xxx < / p>


6 commentaires

Bonjour @gordonlinoff, cela entraînera d'abord une erreur car la pièce de décalage manque d'une ligne de mots clés, puis il devrait être décalé 0 rangées car cela retournera aa | 2 . Acclamations!


Qu'est-ce que tu sais? Le décalée 0 Fetch 1 première ligne seulement; clause fonctionne sur Oracle. Merci.


@Vboka. . . Chaque fois que j'utilise extraire dans SQL Server, j'ai un blocage en raison de l'exigence de la clause offset . Merci.


Bonjour @gordonlinoff, vous êtes les bienvenus. Ces choses se passent.


Hi @ user1683793 Je ne suis pas sûr que je te suive ... J'ai essayé sans les lignes de mots-clés à Oracle et sans chance: dbfiddle.uk/...


@Vboka ça marche sur mon oracle 12.2 mais pas sur mon oracle 11.2. Comme 11.2 est la production et 12.2 est quelque chose que j'ai testé seul, je ne pense pas que je vais utiliser cette construction à tout moment.



2
votes

Vous pouvez essayer le top comme indiqué ci-dessous. Voici la documentation officielle de TOP (Transact-SQL) .

Select 
      top 1 Id, description, len(description) as MaxLength
from YourTable order by len(description) desc


2 commentaires

Bonjour @surajkumar, l'OP recherche la longueur et non l'ID. Vérifiez à nouveau les paroles de données ...


@Vboka j'ai ajouté que aussi.



3
votes

avec offset & fetch: strong>

  • Offset spécifie le nombre de lignes du sommet du jeu de résultats que vous ignorez ... li>
  • et ensuite la récupération est utilisée pour limiter le résultat au nombre de lignes que vous spécifiez. li> ul>

    La combinaison de ce deux retournera le résultat souhaité, car le jeu de résultats est commandé par LEN (DEC). P>

    select descr as Description, len(descr) "Description length"
        from test
        order by len(descr) desc
        OFFSET 0 ROWS 
        fetch first 1 rows only;
    


1 commentaires

Bonjour @nihaleshama, bienvenue dans le débordement de la pile. J'espère que cela vous aidera et vous aidera à vérifier ceci: Stackoverflow.com/help/someone-answers :) Bravo!



2
votes

Cela fera ce que vous voulez sur Oracle (l'une des balises sur la question): xxx pré>

garder à l'esprit que s'il y a deux (ou plus) enregistrements avec cette longueur, vous va tous les obtenir. Vous pouvez ajouter un et rownum mais qui vous donnera la sélection de la base de données qui choisit de donner. P>

Si vous voulez le premier enregistrement de ceux qui ont le plus long champ, Une sous-requête sera requise: p> xxx pré>

Il y a aussi le offset 0 robinet ... code> version répertoriée précédemment: p>

SQL> select descript, length(descript)
  2  from t
  3  order by length(descript) desc
  4  offset 0 row fetch first 1 row only;

DESCRIPT         LENGTH(DESCRIPT)
-------------------- ----------------
defg                    4


2 commentaires

Hi @ user1683793 dans SQL Server Il est len pas longueur . Acclamations!


Bonjour @ user1683793 Désolé, n'était pas conscient qu'au début de la question, il y avait une étiquette Oracle. Acclamations!