gpt4 book ai didi

mysql - mySQL 中使用 REPLACE 函数索引列

转载 作者:行者123 更新时间:2023-11-29 08:25:33 27 4
gpt4 key购买 nike

可能是一个愚蠢的问题。

我需要在joinwhere中大量使用它:

REPLACE(table_a.column_1, '-', '') = REPLACE(table_b.column_2, '-', '')

由于与其他公司系统的位数据不一致

这可能吗?或者任何其他数据库类型都可以使用 REPLACE 函数对列进行索引吗?例如:

ALTER TABLE `table_a` ADD INDEX ( REPLACE(`column_1`, '-', '') ) ;

数据库类型:MyISAM

最佳答案

不存在 computed column 这样的东西在 MySQL 中。

如果您想格式化某些值以加速索引搜索,您可能需要使用某些触发器。事实上,我今天早上回答了几乎同样的问题:参见https://stackoverflow.com/a/18047511/2363712类似的例子。

就您而言,这会导致类似的情况:

CREATE TABLE `table_a`(`column_1` VARCHAR(255), ... ,
`column_1_fmt` VARCHAR(255),
INDEX(`column_1_fmt`));

CREATE TRIGGER ins_table_a BEFORE INSERT ON `table_a`
FOR EACH ROW
SET NEW.`column_1_fmt` = REPLACE(NEW.column_1, '-', '');

CREATE TRIGGER upd_table_a BEFORE UPDATE ON `table_a`
FOR EACH ROW
SET NEW.`column_1_fmt` = REPLACE(NEW.column_1, '-', '');

现在您将使用 column_1_fmt 搜索值/连接具有所需格式的值。

<小时/>

关于的特殊需求(从某种序列号/引用号中删除破折号?)。也许你应该扭转这个问题。将这些值存储为规范形式(无破折号)。并在 SELECT 时添加所需的破折号。

关于mysql - mySQL 中使用 REPLACE 函数索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053385/

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