Vinnaren i pepparkakshustävlingen!
2013-01-02, 12:22
  #1
Medlem
Knutbollens avatar
Sitter och pillar på ett program som kopplar upp sig mot en databas. Har ingen tidigare erfarenhet av mysql, så jag undrar ifall någon lite mer erfaren skulle kunna hjälpa mig.

Det jag vill är lista alla tabeller som slutar på fyra siffror. Det går att i programmet loopa igenom varje tabell, men det vore snyggare med ett mysql kommando som hittar tabellen åt en.

Jag är nästa säker på att det ska fungera med REGEXP, men det verkar som att det är ömöjligt för mig att få till rätt syntax.

Har ni några idéer?
Citera
2013-01-02, 12:34
  #2
Medlem
Kod:
show tables like '%4';
Eller så kan du använda sql som:
Kod:
SELECT table_name, engine
FROM information_schema.tables where table_name like '%4';
PS: Google: "mysql show tables with names" och några minuter läsande kan ge dig svaret.
Citera
2013-01-02, 12:43
  #3
Medlem
Knutbollens avatar
Citat:
Ursprungligen postat av sagonar
Kod:
show tables like '%4';
Eller så kan du använda sql som:
Kod:
SELECT table_name, engine
FROM information_schema.tables where table_name like '%4';
PS: Google: "mysql show tables with names" och några minuter läsande kan ge dig svaret.

Verkar som att det inte fungerar med dessa. Får som resultat empty set.
Citera
2013-01-02, 12:45
  #4
Medlem
Zhirgoyts avatar
Menar du tabeller som slutar typ "Zhirgoyt8123" eller "Kaka1928" (alltså 4 siffror i slutet)?
Citera
2013-01-02, 12:49
  #5
Medlem
Knutbollens avatar
Citat:
Ursprungligen postat av Zhirgoyt
Menar du tabeller som slutar typ "Zhirgoyt8123" eller "Kaka1928" (alltså 4 siffror i slutet)?

Ja precis, de slutar på _3123.
Citera
2013-01-02, 13:08
  #6
Medlem
Knutbollens avatar
Nu funkar det fint. Skrev:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME REGEXP '[0-9]{4}';
Citera
2013-01-02, 13:13
  #7
Medlem
Citat:
Ursprungligen postat av Knutbollen
Ja precis, de slutar på _3123.

SELECT table_name, engine
FROM information_schema.tables
WHERE SUBSTRING(table_name,LENGTH(table_name)-3,LENGTH(table_name))="[0-9]"

Nåt sånt kanske?

EDIT: Nevermind, såg att du redan löst det.
Citera
2013-01-02, 13:56
  #8
Medlem
Zhirgoyts avatar
Citat:
Ursprungligen postat av Knutbollen
Nu funkar det fint. Skrev:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME REGEXP '[0-9]{4}';

Snyggt.
Ibland hjälper det att bara skriva ner det, så löser man det själv.
Citera
2013-01-02, 14:00
  #9
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av Knutbollen
Nu funkar det fint. Skrev:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME REGEXP '[0-9]{4}';
Det där returnerar alla tabeller vars namn innehåller fyra siffror, inte bara de som slutar med det. Släng på ett $ på regexen:

...WHERE TABLE_NAME REGEXP '[0-9]{4}$';
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback