我不知道如何安装尽可能可移植的SQL,以查询表中所有列的特定短语,例如:
表
ID | Name | text | Date | Author | Status 1 | Augusto Weiand | Test text | 2010-01-01 | Deividi | 1
询问
SELECT * FROM table WHERE columns LIKE '%augusto%2010%text%"
对不起,我没有做足够的详细说明,我想创建一个动态SQL,在这里我不需要用’AND’或’OR’指定列,就像在Postgres中可以做到的那样:
Select * From table Where table::text ~~ '%augusto%2010%text%'
这是连接动态SQL中的值的方式:
set @Pattern = '%augusto%'; select @q := concat('select * from Table1 ', 'where concat(', group_concat(column_name), ', "") like "', @Pattern, '"' ) from information_schema.columns c where table_name = 'Table1'; prepare st from @q; execute st; deallocate prepare st;
当然,动态SQL并不是特别可移植的。这个想法适用于大多数数据库。代码看起来会有所不同。
经过测试并在这里工作。
最后,您可以使用变量替换来做到这一点(这是更好的方法):
select @q := concat('select * from Table1 ', 'where concat(', group_concat(column_name), ', "") like ?' ) from information_schema.columns c where table_name = 'Table1'; set @p = '%augusto%'; prepare st from @q; execute st using @p; deallocate prepare st;
也经过测试(;-)。