Hej, jag använder urlrewrite och har en funktion för att byta ut vissa tecken i titlarna på saker, sen när jag ska hitta rätt post så måste jag skriva om det som är i kolumen för att kunna jämföra och då vill jag alltså köra min funktion på den kolumen. Det är MySQL som jag använder. Du kan inte köra en ASP-funktion i MySQL. Du får skapa ett särskilt uttryck i MySQL för att göra det. Ganska många tecken, men typ I MS SQL Server man man skapa User Defined Functions, men det hjälper väl inte dig just nu.. Hmm... Det verkar som det inte fanns någon bra funktion för att byta ut flera tecken. "Hej, jag använder urlrewrite och har en funktion för att byta ut vissa tecken i titlarna på saker, sen när jag ska hitta rätt post så måste jag skriva om det som är i kolumen för att kunna jämföra och ..." Jo det fanns en anledning, eftersom querystringen kan se ut såhär: "artikelns-titel" medan i databasen så är det "artikelns titel" och kom ihåg att det är inte bara mellanslag som byts ut därför är det lite svårt att byta tillbaka... Borde det inte vara Nästan Jimmy, nästan.... Ditt, Johan, fungerar inte som en lösning på trådens problem. Edward har inte en variabel som heter kolumnen och som han vill köra en funktion på innan han stoppar in den i SQL-satsen. Han vill köra en funktion på själva kolumnen i databasen. aaahhh... Nu får ni ta om det här igen... <b>måste jag skriva om det som är i kolumen</b> Johan, He he, Ser att det har kommit en del förvirringar i tråden, men det är precis som Per säger att det är värdet i en kolumn jag vill formatera för att kunna jämföra den med min querystring. Okej, Edward... Jag passar på att repetera en fråga jag skrev tidigare: Jag byter för att de ska funka i URLer men byter till egna tecken för att få bättre sökmotorsoptimering.Kör egen funktion i SQL
Ex. strSQL = "Select * from tabell where minFunktion(kolumnen) = '"+ Request.Querystring["title"] +"'"Sv: Kör egen funktion i SQL
Kan du förklara vad det är som måste bytas ut?Sv:Kör egen funktion i SQL
!, ?, ", *, /, (, ), mellanlsag
med mera.Sv: Kör egen funktion i SQL
Sv: Kör egen funktion i SQL
Kan du förklara varför du behöver byta ut tecknen?Sv: Kör egen funktion i SQL
Varför inte bara köra en funktion på din Request.Querystring["title"] ???
<code>
strSQL = "Select * from tabell where kolumnen = '"+ minFunktion(Request.Querystring["title"]) +"'"
</code>
Eller satte du den på kolumnnamnet av någon anledning?
Mvh JohanSv:Kör egen funktion i SQL
Sv: Kör egen funktion i SQL
strSQL = "Select * from tabell where "+ minFunktion(kolumnen) +" = '"+ Request.Querystring["title"] +"'"
eller har jag missat något?
Har du dynamiska kolumner eller nått? Hur ser din databas ut?Sv:Kör egen funktion i SQL
För att vara helt korrekt skall det vara
<code>
strSQL = "Select * from tabell where " & minFunktion(kolumnen) & " = '" & Request.Querystring["title"] & "'"
</code>
fast Jimmys variant fungerar förmodligen för de flesta fall också. Dock kan det bli olyckligt om det hamnar siffror någonstans då det i Jimmys fall kan bli en matematisk addition istället för sträängsammanslagning.
// Johan - som är en petimeter ;-)Sv: Kör egen funktion i SQL
Sv:Kör egen funktion i SQL
Där fick jag äta upp för att jag var en petimeter... :-P
Jag förutsatte att det var en variabel. Det framgår förvisso inte av frågan, men om det är en konstant så behöver man ju inte köra funktionen alls utan skriva rätt från första början istället... Jag vet inte riktigt vad jag har missat i frågeställningen här, men som PP påpekar så var nog mitt tidigare antangande felaktigt, men jag vet inte hur det skall tolkas istället.
Kanske ett förtydligande från ursprungliga frågeställaren hjälper här. :-)Sv: Kör egen funktion i SQL
Antingen är jag trög, för trött eller så är jag inte alls trög bara förvirrad :-)
Är det texten i databasen som skall formateras eller är det kolumnnamnen?
Då är frågan varför skicka kolumnnamn i querystring? Säkerhetsmässigt är detta faktiskt inte ett så
bra allternativ.
Sedan andra frågan, varför skall kunden skriva kolumnanamnet själv? om det nu inte är som jag först tolkade det datan i databasen som de anger?
Återigen är jag inne på det jag skrev att man kör formateringen på querystring värdet i så fall.
För detta tolkar jag.
"...är i kolumen för att kunna jämföra och då vill jag alltså köra min funktion på den kolumen"
att nått finns i kolumnen alltså ett värde och det är detta värde du vill formatera men säger att du skall köra din rutin på kulomnen och din pseudo kod ser ut så här.
<code>
Ex. strSQL = "Select * from tabell where minFunktion(kolumnen) = '"+ Request.Querystring["title"] +"'"
</code>
Alltså är det inte värdet du vill ändra utan hur kolumen ser ut i din selectfråga? Du måste väl med att det är titel värdet som skall formateras och inte sj'lka kolumnnamnet?
Måste ha missat nått annars? om inte så tja då har du min lösning ovan som gör det du vill göra ..
Mvh JohanSv:Kör egen funktion i SQL
Det är värdena i kolumnen som skall göras om.
Hade de t.ex. bara behövt omvandlas till versaler hade SQL-satsen sett ut så här:
<code>strSQL = "Select * from tabell where upper(kolumnen) = '"+ Request.Querystring["title"] +"'"</code>
Men nu är det mer avancerade omskrivningar som behöver göras.Sv: Kör egen funktion i SQL
antar att du skriver i VB.Net, jag skriver i C# och då kan man inte använda & som du gör :)Sv:Kör egen funktion i SQL
Du har helt rätt.. Värst vad jag gör bort mig i denna tråden... :-)
// JohanSv: Kör egen funktion i SQL
Sv:Kör egen funktion i SQL
Få se om jag fattat rätt denna gången....
Du har alltså oformatterade värden i databasen som du vill jämför med en formaterad input.
I ditt fall hade jag sett till att data i databasen var formatterat från första början. Antingen genom att formattera den aktuella kolumnen, eller om du måste ha kvar orginalet genom att spegla till en ny kolumn som är formatterad på samma sätt som inputdatat.
På så sätt lyfter du ut formatteringen till att bli en engångssak som sparar run-time prestanda, förutom att det löser ditt problem.
Hoppas detta var hjälp nog.
// JohanSv:Kör egen funktion i SQL
Då säger jag samma sak ingen då som i min första post ;-)
----------
"Hej, jag använder urlrewrite och har en funktion för att byta ut vissa tecken i titlarna på saker, sen när jag ska hitta rätt post så måste jag skriva om det som är i kolumen för att kunna jämföra och ..."
Varför inte bara köra en funktion på din Request.Querystring["title"] ???
strSQL = "Select * from tabell where kolumnen = '"+ minFunktion(Request.Querystring["title"]) +"'"
Mvh Johan
Johan Normén
Blog: http://www.johannormen.com
[.Net Arkitekt Moderator]
-------------Sv:Kör egen funktion i SQL
<b>Kan du förklara varför du behöver byta ut tecknen?</b>
Ge gärna litet exempel på hur data ser ut i tabellen.Sv: Kör egen funktion i SQL
Men det får väl antagligen bli så som Johan S. Säger.