Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mémo tronqué à 255 caractères

5 réponses
Avatar
julien.charles2
Bonjour
J'ai une table avec un identifiant [ID] + un champ [Texte] de type
m=E9mo (dont le contenu peut d=E9passer les 255 caract=E8res)
Lorsque je fais une requ=EAte simple du style SELECT ID, Texte WHERE
[Conditions...], j'obtiens bien tous les caract=E8res du champ m=E9mo.
Ca se complique lorsque j'ajoute un DISTINCT au SELECT et la je n'ai
plus que les 255 premiers caract=E8res de mon champs m=E9mo.
Apparament c'est normal (voir http://support.microsoft.com/kb/275561/fr
au chapitre Recherche sur les types de donn=E9es de caract=E8res et les
types de donn=E9es Memo). C'est pour une histoire d'indexation plus
performante.
Bref apr=E8s quelques recherches infructueuses, ma question est : y'a
t-il une astuce =E0 mettre dans la requ=EAte (ou autre) afin de
r=E9cup=E9rer TOUS les caract=E8res de mon m=E9mo (m=EAme avec un distinct)

5 réponses

Avatar
broldorak
Juste une petite question :
si ton id est unique, à quoi ca sert de faire un distinct ?
Avatar
Tisane
Bonjour Julien,

J'ai une table avec un identifiant [ID] + un champ [Texte] de type
mémo (dont le contenu peut dépasser les 255 caractères)
Lorsque je fais une requête simple du style SELECT ID, Texte WHERE
[Conditions...], j'obtiens bien tous les caractères du champ mémo.
Ca se complique lorsque j'ajoute un DISTINCT au SELECT et la je n'ai
plus que les 255 premiers caractères de mon champs mémo.
Apparament c'est normal (voir
http://support.microsoft.com/kb/275561/fr au chapitre Recherche sur
les types de données de caractères et les types de données Memo).
C'est pour une histoire d'indexation plus performante.
Bref après quelques recherches infructueuses, ma question est : y'a
t-il une astuce à mettre dans la requête (ou autre) afin de
récupérer TOUS les caractères de mon mémo (même avec un distinct)


Comme déjà dit hier je crois, on ne fait pas de Group by ni de Distinct sur
un champ mémo qui peut contenir 65 535 caractères.
Peut-être peux-tu créer des champs calculés dans ta requête avec extraction
des 255 premiers caractères, puis 255 suivants, mais jusqu'où ?
Ou alors une requête basée sur une autre requête, mais je ne vois pas non
plus comment tu vas faire la liaison pour récupérer le champ mémo.

--
Tisane

Avatar
julien.charles2
Bonjour et merci pour vos réponses.

J'ai besoin de faire un distinct car la condition WHERE fait qu'elle
peut me renvoyer des enregistrements identiques.
Tisane > En fait je ne vois pas trop comment concaténer le mémo par
tranche de 255 caractères.
Une solution que j'ai utilisé c'est de faire un SELECT simple sur l'id
et le mémo et de modifier ma condition derrière du genre :
SELECT ID, TEXTE FROM [Table] WHERE ID IN (SELECT ...)
Je sais pas trop si c'est optimal mais bon ... j'ai que ça

Julien
Avatar
Tisane
Bonjour Julien,

[...]
En fait je ne vois pas trop comment concaténer le mémo par
tranche de 255 caractères.
Une solution que j'ai utilisé c'est de faire un SELECT simple sur l'id
et le mémo et de modifier ma condition derrière du genre :
SELECT ID, TEXTE FROM [Table] WHERE ID IN (SELECT ...)
Je sais pas trop si c'est optimal mais bon ... j'ai que ça


Rien ne sera optimal avec un champ memo ;-)
L'essentiel est que cela te donne un résultat qui te convienne. Si tu n'as
pas énormément de données et que le temps de traitement est correct, il n'y
a rien à dire.
Toutefois, si tes memos peuvent être identiques pour plusieurs
enregistrements, je me demande s'ils n'auraient pas dû faire l'objet d'une
table séparée. Mais c'est une autre histoire...

Bonne continuation,
--
Tisane

Avatar
julien.charles2

Bonjour Julien,

[...]
En fait je ne vois pas trop comment concaténer le mémo par
tranche de 255 caractères.
Une solution que j'ai utilisé c'est de faire un SELECT simple sur l'id
et le mémo et de modifier ma condition derrière du genre :
SELECT ID, TEXTE FROM [Table] WHERE ID IN (SELECT ...)
Je sais pas trop si c'est optimal mais bon ... j'ai que ça


Rien ne sera optimal avec un champ memo ;-)
L'essentiel est que cela te donne un résultat qui te convienne. Si tu n 'as
pas énormément de données et que le temps de traitement est correct , il n'y
a rien à dire.
Toutefois, si tes memos peuvent être identiques pour plusieurs
enregistrements, je me demande s'ils n'auraient pas dû faire l'objet d' une
table séparée. Mais c'est une autre histoire...

Bonne continuation,
--
Tisane


ok merci pour ces précisions :o)