Autor Zpráva
Exkalibr
Profil *
Odesílám data z formuláře kde se vyplňuje subject, description a text. V tabulce topics rovněž tyto sloupce existují. Když to odesílám chtěl bych zjistit zda v posledních deseti záznamech není již podobná hodnota text.

Příklad záznamu v tabulce:
subject = "První článek", description = "Jak psát web", text = "Lorem ipsum dolor sit amet."

Nyní odesílám podobný příspěvěk:
subject = "První článek", description = "Jak psát web", text = "Lorem ipsum dolor sit."

Abych zjistil shodu, potřebuju nejdříve oba texty oříznout např. na 20 znaků a pak porovnat.

Víte jak na to?
Keeehi
Profil
SELECT *
FROM (
    SELECT *
    FROM posts
    ORDER BY date DESC -- nebo jiný sloupec podle kterého poznáš stáří
    LIMIT 10
) t
WHERE SUBSTRING(t.text, 0, 10) = "Lorem ipsu";
Exkalibr
Profil *
Díky moc :)
Exkalibr
Profil *
Ještě jsem zjistil, že mám mysql 5, resp. mysqlnd 5.0.10, tak to nejede, tam je podpora od 5.6 www.w3resource.com/mysql/string-functions/mysql-substring-function.php

Ale přišel jsem na to, že mohu stejně použít LEFT(proměnná, délka)

www.w3resource.com/mysql/string-functions/mysql-left-function.php

Kde je příklad
SELECT pub_name, LEFT(pub_name, 5) 
FROM publisher; 
Keeehi
Profil
Tak substring je vlastně jen alias funkce substr, která je v MySQL od veze 4.0 ale left bude samozřejmě fungovat taky.
Exkalibr
Profil *
Ještě dotaz. Ten limit vlastě zkrátí ty výsledky na určitý počet, ale existuje nějaká klauzule, která by omezila tu vstupní množinu záznamů ve které hledám?
Kajman
Profil
Proto je limit v poddotaze a where až na výsledek.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0