Hej! Testa såhär: Hej och tack för ditt svar! Borde du inte kunna ersätta med % Select * from tbl Det ser ut som dit fält innehåller två olika sorters data: En alfanumerisk bit och ett tal. Hej!sql-fråga som ignorerar mellanslag
Jag undrar om det är möjligt att skriva en sql-fråga som ignorerar mellanslag.
Om följande finns i en tabell:
ABC123
DEF 456
om jag skickar följande frågor vill jag ju få en träff:
Select * from tbl WHERE info = 'ABC 123'
Select * from tbl WHERE info = 'DEF456'
Det går ju att hämta alla värden ur tabellen loopa igenom dem och där göra en replace på mellanslag.
Det känns ju inte så bra om det finns väldigt många poster, dvs prestanda blir dålig.
Första posten får jag ju ut genom att göra följande
Select * from tbl WHERE info = replace('ABC 123'," ","") 'här tar jag bort mellanslag
Det funkar ju inte om jag vill ha ut andra posten, eftersom det finns ett mellanslag i den
Det jag är ute efter är alltså något liknande
Select * from tbl WHERE info = ignoreIfValueHasSpace('DEF456')
Hoppas ni förtår hur jag menar....
MariaSv: sql-fråga som ignorerar mellanslag
Select * from tbl WHERE Replace(info, ' ', '') = replace('ABC 123'," ","")
Du får ju fortfarande "problemet" med att du måste köra replace på alla poster, men jag tror inte det det går att lösa på något snabbare sätt om man inte sparar ner informationen i databasen utan mellanslag.
/JohanSv:sql-fråga som ignorerar mellanslag
Det där såg ju jättesmart ut. Tyvärr får jag det inte att funka,
jag får felmeddelade:
"Undefined Function 'Replace' in expression"
MVH
MariaSv: sql-fråga som ignorerar mellanslag
Select * from tbl WHERE info LIKE 'ABC%123'
Select * from tbl WHERE info LIKE 'DEF%456'
//HenkeSv:sql-fråga som ignorerar mellanslag
WHERE info = 'ABC123'
OR info = 'ABC 123'
Detta är nog snabbare än att anropa funktioner.
Men du borde fundera på att tvätta datat på väg in i databasen i stället, så att det alltid är konsekvent på ett sätt. Det gynnar både korrekthet och prestanda.
Sv: sql-fråga som ignorerar mellanslag
Man skulle ju kunna dela upp det i två kolumner. Sv:sql-fråga som ignorerar mellanslag
Jag gör som du säger Ola och "tvättar" datat och tar bort mellanslag när jag lägger till i databasen.
Det som jag funderade över var om jag skulle skippa det. Det är nämligen så att när datat ska presenteras i rapporter o dyl ska det vara formaterat med lite mellanslag här och där. Det som är krångligt är att mellanslagen ska inte alltid vara på samma ställe. Isåfall hade det ju varit lätt fixat...
Datat läses in från en stor text-fil som i sin tur hämtas ur ett stort system. Problemet är att datat inte alltid är rätt formaterat som det ska vara. Ibland finns det med mellanslag och ibland inte.
Nu ska själva textfilen som jag läser in från ändras och datat kommer att vara rätt formaterat från o med nu!! :-)
Idag när datat ska presenteras kör jag igenom strängen i en formateringsfunktion. Risken är att det inte alltid blir korrekt.
Men om jag gör som Henke föreslår med '%' funkar det ju. Det jag får göra är att köra replace på alla mellanslag och lägga in ett % istället. Då kan jag ju tillåta mellanslag vid inmatning!
Tack alla för fin hjälp!