webForumDet fria alternativet

left()?

7 svar · 223 visningar · startad av skyman

skymanMedlem sedan juli 20012 450 inlägg
#1

Hey!
Jag ska köra en join på två tabeller.
Men i den ena så står det tex "U88" och i den andra står det "88".

Hur gör jag för att få bort "U":et?

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select * from skyman join solman on
skyman.c1 = substring(solman.c1 from 2)

Det blir inte bra prestanda. Kan du inte lagra U i en annan kolumn?

skymanMedlem sedan juli 20012 450 inlägg
#3

Jag glömde en sak.
Det kommer se ut som :"U88P12" och jag vill bara ha ut "88"...

Skit i prestandan ;)

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Sånt är lite krångligare.

Hur kan det se ut?
Det kanske går med regexp.

http://www.mysql.com/doc/en/Regexp.html

skymanMedlem sedan juli 20012 450 inlägg
#5

Det skall vara ett "U" och sedan ett x antal siffror och sedan ett "P" och ett y antal siffror.

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Då borde något liknande detta fungera

select * from skyman join solman on
skyman.c1 = substring(solman.c1 from 2 for char_length(skyman.c1))
skymanMedlem sedan juli 20012 450 inlägg
#7

Tack för hjälpen, jag ska försöka få ihop det och se om det funkar. :)

LarsGMedlem sedan dec. 200012 464 inlägg
#8

Jag kom på ett fall som blir fel med min lösning

T.ex. om du har 88 och U888P12 så kommer de att matchas med mitt förslag

select * from skyman join solman on
skyman.c1 = substring(solman.c1 from 2 for char_length(skyman.c1))
and substring(solman.c1 from 1 + char_lengthskyman.c1 for 1) = 'P'
259 ms totalt · 3 externa anrop · v20260731065814-full.30151723
125 ms — hämta forumlista (db)
131 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)