Permalänk
Medlem

Specialare i en MySQL Select

Halloj,

Jag har ett litet problem med en SELECT jag håller på att knåpa ihop och tänkte om det finns någon finurlig MySQL-guru här som kan hjälpa mig på traven.

Jag har en kolumn där datan ser ut såhär:

,P47077,R130116,S36606,

Dvs kommaseparerade värden, innehållet kommer från en scannad streckkod.
Direkt i min SQL-fråga så vill jag selektera ut värdet:

36606

Just nu har jag löst det via PHP, men det är inte optimalt, eftersom jag vill t.ex. kunna sortera SQL-resultatet via frågan också, med just värdet 36606

Typ såhär jag har löst det nu:

$str = ',P47077,R130116,S36606,'; $arr = explode(',', $str); substr($arr[3],1,strlen($str[3]) - 1);

Går det att lösa på något smidigt sätt direkt i SQL-frågan?

Permalänk
Medlem

Vad hindrar dig från att sortera resultatet i PHP?
Jag vet inte hur din uppsättning ser ut men ibland är det önskvärt att sortera i databasen, ibland i serverlogiken, ibland hos klienten.

Jag har inte tillgång till att testa mysql just nu men du kan alltid kika i dokumentationen över strängfunktionerna.
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Många delar i den logiken som ligger i den funktionen jag bygger gör att jag hellre gör all stringkonvertering direkt i MySQL.
Det är helt enkelt optimalt i det här fallet, alla andra lösningar kommer bara vara olika sätt att gå "runt" problemet.

Samt att det är något jag vill lära mig.

Jag har redan googlat, läst manualer, etc. Men eftersom jag inte hittade någon lösning som passade mig så valde jag att ställa frågan här

Permalänk
Medlem
Skrivet av Brasse:

Många delar i den logiken som ligger i den funktionen jag bygger gör att jag hellre gör all stringkonvertering direkt i MySQL.
Det är helt enkelt optimalt i det här fallet, alla andra lösningar kommer bara vara olika sätt att gå "runt" problemet.

Samt att det är något jag vill lära mig.

Jag har redan googlat, läst manualer, etc. Men eftersom jag inte hittade någon lösning som passade mig så valde jag att ställa frågan här

Om du kallar det optimalt att använda en rak skruvmejsel för att skruva kryssskruv så.

Men här har du en alternativ start till manualen
http://stackoverflow.com/questions/5928599/equivalent-of-expl...

Antar att formatet varierar och det är därför du inte har multipla kolumner istället

Permalänk
Medlem

Aldrig använt mysql, men gör ett försök

select substr(substr_index(',P47077,R130116,S36606,' , ',' , -1), 2, length(substr_index(',P47077,R130116,S36606,' , ',' , -1) -1)
....

Bör nog vara -2 istf -1 :

select substr(substr_index(',P47077,R130116,S36606,', ',', -2), 2, length(substr_index(',P47077,R130116,S36606,', ',', -2)-1)