gpt4 book ai didi

Mysql查询在一个表的所有列中搜索一个字符串

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:43 25 4
gpt4 key购买 nike

我想知道如何安装一个尽可能可移植的 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 不是特别可移植。这个想法适用于大多数数据库。代码看起来会有所不同。

测试和工作here .

最后,您可以使用变量替换(这是更好的方法)来做到这一点:

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;

还测试了 (;-)。

关于Mysql查询在一个表的所有列中搜索一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17898055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com