Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tælle antal tegn i et felt

6 views
Skip to first unread message

Kurt Hansen

unread,
Feb 4, 2015, 2:39:18 AM2/4/15
to
Kan jeg skrive en query i phpMyAdmin som tæller antallet af tegn i et
givent felt og dernæst sortere posterne efter længde?

Problemet er, at et bestemt felt ofte indeholder flere end de godt 32000
tegn, som Excel kan håndtere, så en eksporteret csv-fil kan jeg ikke
rigtig bruge til noget.
--
Venlig hilsen
Kurt Hansen

Martin

unread,
Feb 4, 2015, 3:20:36 AM2/4/15
to
SELECT LENGTH(dit_felt) FROM din_tabel ORDER BY LENGTH(dit_felt)

Kurt Hansen

unread,
Feb 4, 2015, 4:12:42 AM2/4/15
to
Den 04/02/15 kl. 09.20 skrev Martin:
Ach, du Lieber! Det var jo nemt og kvikt. Mange tak :-)

Nu for jeg så, ikke overraskende, kun dette felt listet efter længde i
stigende orden. Tallet for antal tegn vil jeg så gerne have med som
kolonne 4 i det udtræk jeg plejer at bruge, som viser:
1. ID-nummer
2. Varenummer
3. Beskrivelse

SELECT products.products_id, products.products_model,
products_description.products_description FROM products,
products_description
WHERE products.products_id = products_description.products_id

Hvor og hvordan fedter jeg denne linje ind:
SELECT LENGTH(products_description) FROM products_description ORDER BY
LENGTH(products_description)

Kurt Hansen

unread,
Feb 4, 2015, 4:27:45 AM2/4/15
to
Den 04/02/15 kl. 10.12 skrev Kurt Hansen:
> Den 04/02/15 kl. 09.20 skrev Martin:
>> On 02/04/2015 08:39 AM, Kurt Hansen wrote:
>>> Kan jeg skrive en query i phpMyAdmin som tæller antallet af tegn i et
>>> givent felt og dernæst sortere posterne efter længde?
>>>
>>> Problemet er, at et bestemt felt ofte indeholder flere end de godt 32000
>>> tegn, som Excel kan håndtere, så en eksporteret csv-fil kan jeg ikke
>>> rigtig bruge til noget.
>
>> SELECT LENGTH(dit_felt) FROM din_tabel ORDER BY LENGTH(dit_felt)
>
> Ach, du Lieber! Det var jo nemt og kvikt. Mange tak :-)

Det næste problem har jo ikke noget med database at gøre, men alligevel
... måske har noger her erfaring med tilsvarende problematik:

Det duer ikke at indlæse resultatet i Excel. Af det sorterede resultat
kan jeg se, at den post med det længste felt indeholder over 75000 tegn
og det kan hverken Excel eller OpenOffice Calc håndtere.

Uanset hvilket program jeg måtte finde på at bruge til den efterfølgende
redigering, er jeg jo nødt til at have ID-feltet med, da der jo ellers
ikke er styr på hvor posterne i den redigerede fil hører hjemme.

Nogen der har en idé?

Kan man f.eks. splitte feltet op i blokke à max. 29999 tegn og udtrække
det således:
1. ID-nummer
2. Varenummer
3. Beskrivelse_1 (de første 29999 tegn)
4. Beskrivelse_2 (de næste 29999 tegn)
5. Beskrivelse_3 (de resterende tegn)
?

Martin

unread,
Feb 4, 2015, 7:46:43 AM2/4/15
to
On 02/04/2015 10:27 AM, Kurt Hansen wrote:
> Den 04/02/15 kl. 10.12 skrev Kurt Hansen:
>> Den 04/02/15 kl. 09.20 skrev Martin:
>>> On 02/04/2015 08:39 AM, Kurt Hansen wrote:
>>>> Kan jeg skrive en query i phpMyAdmin som tæller antallet af tegn i et
>>>> givent felt og dernæst sortere posterne efter længde?
>>>>
>>>> Problemet er, at et bestemt felt ofte indeholder flere end de godt
>>>> 32000
>>>> tegn, som Excel kan håndtere, så en eksporteret csv-fil kan jeg ikke
>>>> rigtig bruge til noget.
>>
>>> SELECT LENGTH(dit_felt) FROM din_tabel ORDER BY LENGTH(dit_felt)
>>
>> Ach, du Lieber! Det var jo nemt og kvikt. Mange tak :-)
>
> Det næste problem har jo ikke noget med database at gøre, men alligevel
> ... måske har noger her erfaring med tilsvarende problematik:
>
> Det duer ikke at indlæse resultatet i Excel. Af det sorterede resultat
> kan jeg se, at den post med det længste felt indeholder over 75000 tegn
> og det kan hverken Excel eller OpenOffice Calc håndtere.

SELECT LEFT('foobarbar', 5);
// fooba

>
> Uanset hvilket program jeg måtte finde på at bruge til den efterfølgende
> redigering, er jeg jo nødt til at have ID-feltet med, da der jo ellers
> ikke er styr på hvor posterne i den redigerede fil hører hjemme.
>
> Nogen der har en idé?
>
> Kan man f.eks. splitte feltet op i blokke à max. 29999 tegn og udtrække
> det således:
> 1. ID-nummer
> 2. Varenummer
> 3. Beskrivelse_1 (de første 29999 tegn)
> 4. Beskrivelse_2 (de næste 29999 tegn)
> 5. Beskrivelse_3 (de resterende tegn)
> ?



SELECT
products.products_id,
products.products_model,
LEFT(products_description.products_description, 1000),
LENGTH(products_description)
FROM
products,
products_description
WHERE
products.products_id = products_description.products_id
ORDER BY
LENGTH(products_description)

Kurt Hansen

unread,
Feb 4, 2015, 8:13:05 AM2/4/15
to
Den 04/02/15 kl. 13.46 skrev Martin:

> SELECT
> products.products_id,
> products.products_model,
> LEFT(products_description.products_description, 1000),
> LENGTH(products_description)
> FROM
> products,
> products_description
> WHERE
> products.products_id = products_description.products_id
> ORDER BY
> LENGTH(products_description)

Øhhh, jæuw, så får jeg i princippet det jeg gerne vil have, men det var
jo meningen at hvis products_description erlængere end 29999 tegn, så
skulle de næste 29999 komme i kolonne 4 og resten i kolonne 5.

Jørn Andersen

unread,
Feb 4, 2015, 1:50:17 PM2/4/15
to
On Wed, 04 Feb 2015 14:13:04 +0100, Kurt Hansen <ku...@invalid.dk>
wrote:

>Øhhh, jæuw, så får jeg i princippet det jeg gerne vil have, men det var
>jo meningen at hvis products_description erlængere end 29999 tegn, så
>skulle de næste 29999 komme i kolonne 4 og resten i kolonne 5.

Måske en overvejelse værd, om Excel er det rigtige værktøj til at
håndtere så store tekst-mængder?

(Men det kræver mere kendskab til formålet for at kunne foreslå
alterntive værktøjer ...)


Mvh. Jørn

--
Jørn Andersen
http://socialister.dk
http://marxisme.dk

Arne Vajhøj

unread,
Feb 4, 2015, 7:54:50 PM2/4/15
to
On 2/4/2015 4:12 AM, Kurt Hansen wrote:
> Den 04/02/15 kl. 09.20 skrev Martin:
>> On 02/04/2015 08:39 AM, Kurt Hansen wrote:
>>> Kan jeg skrive en query i phpMyAdmin som tæller antallet af tegn i et
>>> givent felt og dernæst sortere posterne efter længde?
>>>
>>> Problemet er, at et bestemt felt ofte indeholder flere end de godt 32000
>>> tegn, som Excel kan håndtere, så en eksporteret csv-fil kan jeg ikke
>>> rigtig bruge til noget.
>
>> SELECT LENGTH(dit_felt) FROM din_tabel ORDER BY LENGTH(dit_felt)
>
> Ach, du Lieber! Det var jo nemt og kvikt. Mange tak :-)

Hvis du er skiftet til UTF-8, så skal du være opmærksom
på forskellen på LENGTH og CHAR_LENGTH!

Arne


Kurt Hansen

unread,
Feb 4, 2015, 10:28:40 PM2/4/15
to
Den 05/02/15 kl. 01.54 skrev Arne Vajhøj:
Webshoppen kører på UTF-8.

Kurt Hansen

unread,
Feb 4, 2015, 10:29:41 PM2/4/15
to
Den 04/02/15 kl. 14.13 skrev Kurt Hansen:
Jeg fedtmulede lidt og sandelig om ikke det lykkedes i første forsøg :-)

SELECT
products.products_id,
products.products_model,
LEFT(products_description.products_description, 29999),
MID(products_description.products_description, 30000,29999),
MID(products_description.products_description, 59999,29999),
LENGTH(products_description)
FROM
products,
products_description
WHERE
products.products_id = products_description.products_id
ORDER BY
LENGTH(products_description)

Arne Vajhøj

unread,
Feb 5, 2015, 3:24:20 PM2/5/15
to
Det er ikke hvad web delen kører, men hvad databasen kører som
betyder noget her, men jeg vil formode at du kører det samme.

Så jeg vil gætte på at du vil foretrække CHAR_LENGTH fremfor
LENGTH.

Men du kan selv vurdere.

LENGTH('ÆØÅ') er 6 med UTF-8
CHAR_LENGTH('ÆØÅ') er 3

Hvilket resultat passer dig bedst?

Arne


0 new messages