webForumDet fria alternativet

left()?

Databaser & SQL

7 svar · 223 visningar · startad av skyman

Medlem sedan juli 20012 450 inlägg
Frågan#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?

Medlem 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?

Medlem 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 ;)

Medlem 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

Medlem 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.

Medlem 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))
Medlem 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. :)

Medlem 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'
252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)