2017-06-08 2 views

Antwort

0

Sie in mit Volltextsuche aussehen könnte:

SELECT * 
FROM user_college_tbl 
WHERE MATCH(col1, col2, ...) AGAINST ('Impulse' IN NATURAL LANGUAGE MODE) 

Dies würde davon ausgehen, dass Sie Setup-Volltextindizes hatten auf allen Textspalten wollten Sie in die Suche einbezogen werden:

CREATE TABLE user_college_tbl (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    college_name VARCHAR(200), 
    col1 TEXT, 
    col2 TEXT, 
    -- ... more text columns 
    FULLTEXT(college_name, col1, col2, ...) 
) ENGINE=InnoDB; 

Wenn Sie eine ältere Version von MySQL als Version 5.6 verwenden oder keine Volltextsuche wünschen, können Sie möglicherweise nur LIKE Ausdrücke für jede Textspalte in der Tabelle verknüpfen, z

SELECT * 
FROM user_college_tbl 
WHERE college_name LIKE '%Impulse%' OR 
     col1 LIKE '%Impulse%' OR 
     col2 LIKE '%Impulse%' 
+0

'FULLTEXT- tun' nicht –

+0

unterstützt wird Sie sagen, dass Ihre Datenbank nicht zur Volltextsuche unterstützt? Welche MySQL-Version laufen Sie? –

+0

Ja. Mysql-Version ist 5.5 –

0

Sie können auch eine dynamische SQL-Abfrage durchführen.

Abfrage

set @query = null; 
select 
    group_concat(
    concat(
     column_name, '', ' like \'%Impulse%\' or ' 
    ) separator '' 
) into @query 
from information_schema.columns 
where table_name = 'user_college_tbl'; 

set @query = concat('select * from user_college_tbl where ', 
      left(@query, length(@query) - 4)); 


prepare stmt from @query; 
execute stmt; 
deallocate prepare stmt; 
+0

Ich suche eine einfache Lösung. –

+0

Dies ist überhaupt keine schwierige Lösung. – Wanderer

+0

Hier müssen Sie nicht mit der dynamischen SQL-Abfrage den Namen jeder Spalte direkt eingeben – Wanderer

Verwandte Themen