webForumDet fria alternativet

Hitta u_12 men inte u_123

Databaser & SQL

6 svar · 535 visningar · startad av drew

Medlem sedan mars 2007845 inlägg
Frågan#1

Jag har ett fält som kan se ut som någon av dessa

u_12

u_12:u_151

u_12:u_151:u_18

användarnumren är separerade med kolon.
Jag har försökt

SELECT * FROM table_1 WHERE to_address LIKE "%u_15_" ;
SELECT * FROM table_1 WHERE to_address LIKE "%u_15_" ESCAPE ":" ;

I den första har jag även försökt med % bakom. Då får jag träff på rader som innehåller aningen u_15 eller u_151 (eller båda). I det andra exemplet får jag bara träff på rader som innehåller u_151, men inte dom som innehåller u_15 (om inte u_151 finns i samma).

Hur ska jag förklara för MySQL att den bara ska hitta raden om det är tomt eller ett kolon efter. Inte om det är en siffra.

Medlem sedan dec. 20025 483 inlägg
#2
SELECT * FROM table_1 WHERE to_address REGEXP "u_15([^0-9]|$)" ;
Medlem sedan mars 2007845 inlägg
#3

Toppen fungerar perfekt, tack.

([^0-9]|$)... Skulle ex ([^0,5,3]|$) ge samma resultat. Att 0, 5 och 3 undantas men resten accepteras?

Medlem sedan dec. 20025 483 inlägg
#4

Nästan: ([^053]|$)

:)

Medlem sedan mars 2007845 inlägg
#5

Om jag vill göra åt andra hållet att 0-9 accepteras, men inget annat så tar jag bara bort ^?

Medlem sedan dec. 20025 483 inlägg
#6

Japp! Om 0..9 måste följa 5:an kan du skriva "u_15[0-9]".

Medlem sedan mars 2007845 inlägg
#7

Ok. Tack.

249 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)