webForumDet fria alternativet

Söka i mysql

4 svar · 417 visningar · startad av M@rtin

M@rtinMedlem sedan dec. 19992 085 inlägg
#1

Jag vill göra en sökning som fungerar som en enkel sökmotor. Man ska kunna skriva flera ord separerade utav mellanslag och sidan ska hitta alla fält i en kolumn i databasen som innehåller något av orden och helst sortera så att de bästa träffarna kommer först. Går det att göra på något enkelt sätt? Jag trodde det skulle finnas något enkelt wildcard man kunde ersätta mellanslag med som typ % men efter flitigt letande verkar det som att det inte finns någon inbyggd funktion för detta i mysql?

LarsGMedlem sedan dec. 200012 464 inlägg
echoSweMedlem sedan nov. 20041 189 inlägg
#3

Kan du inte bara bygga upp din SQL-sträng från sökorden de ha skrivit in?

    /// <summary>
    /// Returns a SQL string
    /// </summary>
    /// <param name="s"></param>
    /// <returns>SQL String</returns>
    private DataTable sheit(string s)
    {
        //string temp = //replace duplicate spaces with one using regex-es, orkar inte
        string[] strSearch = s.Split(" ");
        StringBuilder sb = new StringBuilder("SELECT rubrik, brodtext FROM minTabell WHERE");
        int i = 0;
        foreach(string str in strSearch)
        {
            //warning - SQL injections!
            //check for first loop
            sb.Append((i!=0 ? " OR" : " ") + "brodtext LIKE '%" + str + "%' OR rubrik LIKE '%" + str + "%')");
            i++;
        }
        DataTable dt = objDAL.Search(sb.ToString()); //returns DataTable
        return dt;
    }
echoSweMedlem sedan nov. 20041 189 inlägg
#4

Hehe, där vad jag lite sen ;). Hann visst posta innan mig.

M@rtinMedlem sedan dec. 19992 085 inlägg
#5

Aha MATCH var en bra funktion. Tack för hjälpen!

138 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)