gpt4 book ai didi

Mysql - 选择 table1.something, table2.* WHERE 替换所有列,如 %something%

转载 作者:行者123 更新时间:2023-11-30 00:15:09 25 4
gpt4 key购买 nike

我有以下查询:

SELECT `mmetal`.`id`, `mmetal`.`name`, `steelmarks`.`EN`, `steelmarks`.`DIN` FROM `mmetal` LEFT JOIN `steelmarks` ON `mmetal`.`id`=`steelmarks`.`id` WHERE REPLACE(REPLACE(REPLACE(REPLACE(`name`,' ',''),'\)',''),'\(',''),'-','') LIKE '%something%'

(替换 - 替换名称栏中的“”、“(”、“)”、“-”)

1) Steelmarks 表大约有 15 列 - 我需要替换

`mmetal`.`id`, `mmetal`.`name`, `steelmarks`.`EN`, `steelmarks`.`DIN`,`steelmarks`.`column3`,...,...,...`

类似的东西

`mmetal`.`id`, `mmetal`.`name`, `steelmarks`.*

但它不起作用

2) 我希望将 LIKE 函数与 REPLACE 一起使用到所有选定的列除了 id 列表,而不仅仅是“名称”。像这样的东西:

WHERE REPLACE(REPLACE(REPLACE(REPLACE(ALL COLUMNS,' ',''),'\)',''),'\(',''),'-','') LIKE '%something%'

现在我需要使用

WHERE REPLACE...column1 LIKE %something% OR REPLACE...column2 LIKE %something% OR REPLACE...column3 LIKE %something% OR ...

请问您对我的问题有什么建议吗?

最佳答案

replace 和 like 运算符一次仅对一列进行操作。以下内容可能会满足您的要求,但您仍然必须列出所有列:

REPLACE(REPLACE(REPLACE(REPLACE(concat_ws('|', col1, col2, col3, . . . ),' ',''),'\)',''),'\(',''),'-','') LIKE '%something%'

这会将值与分隔符连接在一起。

或者,您可以使用以下内容查询 INFORMATION_SCHEMA.COLUMNS:

select concat(replace(<YOUR EXPRESSION HERE>, 'col1', c.column_name), ' and')
from information_schema.columns c
where table_name = YOURTABLEHERE

然后使用结果构建您的查询。

关于Mysql - 选择 table1.something, table2.* WHERE 替换所有列,如 %something%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23711745/

25 4 0