webForumDet fria alternativet

Söka i mysql

Databaser & SQL

4 svar · 417 visningar · startad av M@rtin

Medlem sedan dec. 19992 085 inlägg
Frågan#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?

Medlem sedan dec. 200012 464 inlägg
Medlem 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;
    }
Medlem sedan nov. 20041 189 inlägg
#4

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

Medlem sedan dec. 19992 085 inlägg
#5

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

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)