我无法让REPLACE函数在这里显示的SQL命令上工作。我想让它接受我的搜索词(55512),并使用regexp中修改过的字段在字段中搜索它,以删除所有非字母数字字段。
SELECT
`Customers`.`id` AS `Customers__id`,
`Contact`.`id` AS `Contact__id`,
`Contact`.`customer_id` AS `Contact__customer_id`,
`Contact`.`full_name` AS `Contact__full_name`,
`Contact`.`phones` AS `Contact__phones`
FROM
`customers` `Customers`
INNER JOIN `contacts` `Contact` ON `Contact`.`id` = (`Customers`.`contact_id`)
WHERE
REPLACE(
`Contact`.`phones`, "[^a-zA-Z0-9]",
""
) LIKE '%55512%'
LIMIT
20 OFFSET 0
因此,我想要做的是能够搜索“55512”,并在Contact
. phones
字段包含“999-555-1212”或“(999)555-1212”。Contact
. phones
字段存储为JSON数组,以防与此相关,但我希望上面的SQL命令删除所有括号,花括号等,然后搜索该字符串。
当我在MySQL中执行上述搜索时,它返回零个结果,但有一个结果包含:[{“数值”:“999-555-1212”,“标签”:“主要”}]
1条答案
按热度按时间t98cgbkg1#
问题是
REPLACE
函数不能与regex一起工作,而是试图匹配字符串。您可以通过两种方式解决此问题:
REGEXP_REPLACE
函数,有效使用正则表达式:REPLACE
函数,但仅使用空字符串替换破折号。检查here演示。