Kom ihåg mig?
Home Menu

Menu


Hjälp med reguljärt i MySQL

Ämnesverktyg Visningsalternativ
Oläst 2007-12-07, 12:03 #1
boenas avatar
boena boena är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2005
Inlägg: 416
boena boena är inte uppkopplad
Flitig postare
boenas avatar
 
Reg.datum: Sep 2005
Inlägg: 416
Hej,

Behöver hjälp med ett reguljärt uttryck som jag inte får att fungera. Mitt mål är att hämta alla domän som börjar på x men inte xn--.

Följande hämtar alla domän på X:
Kod:
SELECT domain FROM domains WHERE domain REGEXP '^x'
Följande skulle man tro hämtar alla på x utom xn-- men den fungerar inte:
Kod:
SELECT domain FROM domains WHERE domain REGEXP '^x' AND WHERE domain NOT REGEXP '^xn--'
Någon som vet vad som måste göras?
boena är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-07, 12:41 #2
mackan_the_man mackan_the_man är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 2
mackan_the_man mackan_the_man är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 2
måste regex användas?

om inte kan du väl göra så här:
Kod:
SELECT domain FROM domains WHERE LEFT(domain, 1) = 'x' AND LEFT(domain, 4) != 'xn--';
mackan_the_man är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-07, 12:41 #3
gooses avatar
goose goose är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2007
Inlägg: 451
goose goose är inte uppkopplad
Flitig postare
gooses avatar
 
Reg.datum: Jun 2007
Inlägg: 451
kan inte mysqls skumrask-syntax, men det ser ut som du har ett WHERE för mycket i det andra codeblocket.
goose är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-07, 14:00 #4
boenas avatar
boena boena är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2005
Inlägg: 416
boena boena är inte uppkopplad
Flitig postare
boenas avatar
 
Reg.datum: Sep 2005
Inlägg: 416
Tack Mackan kunde använda mig av LEFT faktiskt.

Såhär blev den slutgiltiga versionen:

Kod:
SELECT domain FROM domains WHERE domain REGEXP '^x' AND LEFT(domain, 4) != 'xn--'
Har faktiskt aldrig använt mig av LEFT innan
boena är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-08, 11:06 #5
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
REGEXP är ganska resurskrävande och gör att index inte kan användas (vilket kanske även gäller LEFT() beroende på hur klokt MySQL är).

Kod:
WHERE domain LIKE 'x%' AND domain NOT LIKE 'xn--%'
Borde väl fungera? (Och då kan index användas om du har indexerat domain)
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-08, 12:00 #6
boenas avatar
boena boena är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2005
Inlägg: 416
boena boena är inte uppkopplad
Flitig postare
boenas avatar
 
Reg.datum: Sep 2005
Inlägg: 416
martine - Har testat den tidigare men då fungerade det inte. Ska prova igen senare för att se att det inte bara var ett syntaxfel.
boena är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-08, 15:02 #7
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by boena@Dec 8 2007, 13:00
martine - Har testat den tidigare men då fungerade det inte. Ska prova igen senare för att se att det inte bara var ett syntaxfel.
Eftersom det antagligen är väldigt få xn-- så kan du ju också sortera ut dem efteråt:

Kod:
WHERE domain LIKE 'x%' HAVING domain NOT LIKE 'xn--%'
Eller liknande med LEFT() eller vad du föredrar - blir nog ännu snabbare (om du är ute efter effektivitet).
martine är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 10:17.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017